Sky数

来源:互联网 发布:淘宝主图尺寸怎么调整 编辑:程序博客网 时间:2024/05/18 02:41

Sky从小喜欢奇特的东西,而且天生对数字特别敏感,一次偶然的机会,他发现了一个有趣的四位数2992,这个数,它的十进制数表示,其四位数字之和为2+9+9+2=22,它的十六进制数BB0,其四位数字之和也为22,同时它的十二进制数表示1894,其四位数字之和也为22,啊哈,真是巧啊。Sky非常喜欢这种四位数,由于他的发现,所以这里我们命名其为Sky数。但是要判断这样的数还是有点麻烦啊,那么现在请你帮忙来判断任何一个十进制的四位数,是不是Sky数吧。
Input
输入含有一些四位正整数,如果为0,则输入结束。
Output
若n为Sky数,则输出“#n is a Sky Number.”,否则输出“#n is not a Sky Number.”。每个结果占一行。注意:#n表示所读入的n值。
Sample Input
2992
1234
0
Sample Output
2992 is a Sky Number.
1234 is not a Sky Number.

#include<cstdio>#include<cstring>#include<cmath>#include<algorithm>using namespace std;main(){    int n;    while(scanf("%d",&n)!=EOF&&n!=0)    {        int a,b,c,d;        d=n%10;        c=((n%100)-d)/10;        a=n/1000;        b=(n/100)%10;        int sum1=a+b+c+d;        int num1=n%16;        int num2=(n%(16*16)-num1)/16;        int num4=n/(16*16*16);        int num3=(n/(16*16))%16;        int sum2=num1+num2+num3+num4;        int p,q,r,s;        p=n%12;        q=((n%(12*12))-p)/12;        s=n/(12*12*12);        r=(n/(12*12))%12;        int sum3=p+q+r+s;        if(sum1==sum2&&sum1==sum3)        {            printf("%d is a Sky Number.\n",n);        }        else        {            printf("%d is not a Sky Number.\n",n);      }    }    return 0;}