思路
就是把这个数分别转化为十二进制和十六进制,然后分别计算三种进制下,每个数位上面的数字相加之和是否相等。本题考查点是进制的转化。
代码
#include<stdio.h> int transToAny(int num,int a); int main(int argc, char const *argv[]) { int i; int num1,num2,num3; for(i = 2992; i < 10000; i++){ num1 = transToAny(i,10); num2 = transToAny(i,12); num3 = transToAny(i,16); if(num1 == num2 && num1 == num3) printf("%d\n",i); } return 0; } int transToAny(int num,int a){ int Quo = 0,Rem = 0,sum = 0; while(1){ Quo = num/a; Rem = num%a; sum += Rem; if(Quo == 0) break; else num = Quo; /* code */ } return sum; }