杭电 -- 1197
题意及思路
题意:特殊的四位数,是说一个四位数,假如他的十进制表示形式下的个位数之和 与 十二进制及十六进制形式下的个个位上数的和 相等,则这是我们需要输出的。
思路:利用进制间的转换将这三种形式下的和进行比较判断,如若相等,则输出。
踩坑点:需要熟练十进制转换到其他进制的转换方法。
代码
#include<stdio.h> #include<string.h> int trans(int n,int type){ int sum = 0; char res[4+1]; int index = 0; if(type==16){while(n != 0){ sum += n%type; n = n/type; } }else if(type==12){while(n != 0){ sum += n%type; n = n/type; } } return sum; } void judge(int res[],int n){ int flag = 1; for(int i=1;i<3;i++){ if(res[i]!=res[i-1]){ flag = 0; break; } } if(flag){ printf("%d\n",n); }else{ //do null } } int sum(int n){ int res = 0; res += n%10+n/10%10+n/10/10%10+n/1000; return res; } int main(){ int res[3]; int k; for(int i=2992;i<=9999;i++){ //reset k = 0; //10 res[k++] = sum(i); //12 res[k++] = trans(i,12); //16 res[k++] = trans(i,16); //judge judge(res,i); } return 0; }