四位数2992,这个数,它的十进制数,其四位数字之和为2+9+9+2=22,它的十六进制数BB0,其四位数字之和也为22,同时它的十二进制数表示1894,其四位数字之和也为22,把这样的一个四位数命名为天空数,任给一个四位数判断它是否为天空数
#include<stdio.h>
int main()
{
int n,m,h,s,a,b,c,d,k=0,t=0;
while(scanf("%d",&n)!=EOF&&n!=0)
{
h=m=n;k=0;t=0;
s=(n/1000)+(n%1000/100)+(n%100/10)+(n%10);//求这个四位数十进制各个位上的数字的和
while(n!=0)//转换为16进制,并求16进制各个位上数字的和
{
a=n/16;
b=n%16;
k=k+b;
n=a;
}
while(h!=0)//转换为12进制,并求12进制各个位上数字的和
{
c=h/12;
d=h%12;
t=t+d;
h=c;
}
if(s==k&&s==t)//最后判断是否为天空数
printf("%d is a Sky Number.\n",m);
else
printf("%d is not a Sky Number.\n",m);
}
return 0;
}