首页 > 代码库 > HDU-2097

HDU-2097

主要考察进制转换

 

Description

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.
技术分享
 1 #include<iostream> 2 #include<cstdio> 3 #include<cmath> 4 #include<cstring> 5 #include<cstdlib> 6 #include<algorithm> 7 using namespace std; 8  9 int main()10 {11     int x,t,n,i,b;12     char a[100];13     char c[]="ABCDEFGHIJKLMNOPQRSTUVWXYZ";14     while(cin>>n&&n!=0)15     {16         int cnt=0;17         cnt+=n/1000;cnt+=((n/100)%10);cnt+=((n%100)/10);cnt+=n%10;18         t = n;19         t = (int)fabs((double)t);20         for (i = 0;; i++)21         {22             b = t%16;23             if (b >= 10)24                 a[i] = c[b - 10];25             else26                 a[i] = b + 0;27             t = (t - b) / 16;28             if (t == 0)29                 break;30         }31         int cnt1=0;32         for(int j=0;j<=i;j++)33         {34             if(a[j]>=A&&a[j]<=G) {a[j]-=7;}35             if(a[j]>=0&&a[j]<=9) {a[j]-=0;}36             cnt1+=a[j];37         }38         t = n;39         t = (int)fabs((double)t);40         for (i = 0;; i++)41         {42             b = t%12;43             if (b >= 10)44                 a[i] = c[b - 10];45             else46                 a[i] = b + 0;47             t = (t - b) / 12;48             if (t == 0)49                 break;50         }51         int cnt2=0;52         for(int j=0;j<=i;j++)53         {54             if(a[j]>=A&&a[j]<=G) {a[j]-=7;}55             if(a[j]>=0&&a[j]<=9) {a[j]-=0;}56             cnt2+=a[j];57         }58         if(cnt==cnt1&&cnt==cnt2) cout<<n <<" is a Sky Number."<<endl;59         else cout<<n <<" is not a Sky Number."<<endl;60     }61     return 0;62 }
View Code
1234 is not a Sky Number.

HDU-2097