码迷,mamicode.com
首页 > 其他好文 > 详细

HDU-2097

时间:2015-01-27 13:08:51      阅读:101      评论:0      收藏:0      [点我收藏+]

标签:

主要考察进制转换

 

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             else
26                 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             else
46                 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

标签:

原文地址:http://www.cnblogs.com/yifangfengjing/p/4252515.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!