http://acm.hdu.edu.cn/showproblem.php?pid=2097
#include<stdio.h>
int main()
{
int n;
while(scanf("%d",&n)!=EOF)
{
if(n==0) break;
int a,b,c,d,a2,b2,c2,d2=0,a6,b6,c6,d6=0;
a=n%10; //求该数的十进制表示中,各位上数字
b=(n%100)/10;
c=(n%1000-n%100)/100;
d=n/1000;
a2=n%12; //求该数的十二进制表示中,各位上数字
b2=(n%(12*12))/12;
c2=(n%(12*12*12)-b2*12-a2)/(144);
d2=n/(12*12*12);
a6=n%16; //求该数的十六进制表示中,各位上数字
b6=(n%(16*16))/16;
c6=(n%(16*16*16)-b6*16-a6)/256;
d6=n/(16*16*16);
int s1,s2,s3;
s1=a+b+c+d; //求该数的十进制表示中,各位上数字之和
s2=a2+b2+c2+d2; //求该数的十二进制表示中,各位上数字之和
s3=a6+b6+c6+d6; //求该数的十六进制表示中,各位上数字之和
if(s1==s2&&s1==s3)
printf("%d is a Sky Number.\n",n);
else
printf("%d is not a Sky Number.\n",n);
}
return 0;
}