- //题目的难度是读题233333 题意:输出所有四位数 满足十进制各位数字之和等于十二进制 等于十六进制的 顺便换个行
- //这是我写的 很丑 对吧
-
#include <stdio.h>
int main()
{
int n,a1,a2,a3,a4,b1,b2,b3,b4,c1,c2,c3,c4;
for(int i=1000;i<=9999;i++)
{
a1=i/1000;a2=i/100%10;a3=i/10%10;a4=i%10;
b1=i/1728;b2=i/144%12;b3=i/12%12;b4=i%12;
c1=i/4096;c2=i/256%16;c3=i/16%16;c4=i%16;
if((a1+a2+a3+a4)==(b1+b2+b3+b4) && (b1+b2+b3+b4)==(c1+c2+c3+c4))
// 十进制等于十六进制 等于十二进制的各位数字之和
printf("%d\n",i);
}
return 0;
}
- //这是别人写的 定义了一个函数 看起来简洁多了 比我的好得多
#include <stdio.h>
int mod(int n , int b){
int sum = 0;
while(n){
sum += n%b;
n /= b;
}
return sum;
}
int main(){
int i ;
for(i = 2992 ; i <= 9999 ; ++i){
if(mod(i,10) == mod(i,12) &&mod(i,10) == mod(i,16)){
printf("%d\n",i);
}
} return 0;
}
//还有三个while 循环的
#include <stdio.h>
int main()
{
for(int i=2992;i<=9999;i++)
{
int n=i;
int k=i;
int m=i;
int ans=0,pos=0,cnt=0;
while(n)
{
ans+=n%10;
n/=10;
}
while(m>=12)
{
cnt+=m%12;
m/=12;
}
cnt+=m;//最后一次的余数 需要加上
while(k>=16)
{
pos+=k%16;
k/=16;
}
pos+=k;
if(pos==ans && ans==cnt) printf("%d\n",i);
}
return 0;
}
- //一个C++的 大同小异
#include <iostream>
using namespace std;
int s(int i,int n)//i为数,而n为进制。。。
{
int sum=0;
while((i-i%n)/n)
{
sum+=i%n;
i=(i-i%n)/n;
}
sum+=i%n;
return sum;
}
int main()
{
for(int i=1000; i<=9999; i++)
{
if( s(i,16)==s(i,12) && s(i,16)==s(i,10) )
{
cout<<i<<endl;
}
}
return 0;
}