http://acm.hdu.edu.cn/showproblem.php?pid=1197
挺简单的,弄清楚进制转换的本质就好了。本质就在代码里,看了discuss下有人用itoa转换成字符然后加,完全没必要了。
#include<cstdio>
using namespace std;
int main()
{
int a, b, c, d, desum, dusum, hesum;
for(int i = 2992; i<=9999; ++i)
{
a = i % 10;
b = (i/10)%10;
c = (i/100)%10;
d = i/1000;
desum = a+b+c+d;
a = i % 12;
b = (i/12)%12;
c = (i/144)%12;
d = i/1728;
dusum = a+b+c+d;
if(desum==dusum)
{
a = i % 16;
b = (i/16)%16;
c = (i/256)%16;
d = i/4096;
hesum = a+b+c+d;
if(desum==hesum)
{
printf("%d\n", i);
}
}
}
return 0;
}