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

HDU Sky数 2097

时间:2015-09-17 22:57:35      阅读:140      评论:0      收藏:0      [点我收藏+]

标签:

解题思路:类比求出10进制数各个位上的数字之和,求出12进制和16进制上的数。

技术分享
 1 #include<cstdio>
 2 #include<cstring>
 3 #include<algorithm>
 4 using namespace std;
 5 int n;
 6 
 7 int getShi(int t)
 8 {
 9     int ans = 0;
10     t = n;
11     while(t)
12     {
13         ans += t%10; //草稿纸上演示一下就知道原理。
14         t /= 10;
15     }
16     //printf("ans10 = %d\n", ans); //打印出来,确认一下。
17     return ans;
18 }
19 
20 int getShiliu(int t)
21 {
22     int ans = 0;
23     t = n;
24     while(t)
25     {
26         ans += t%16;
27         t /= 16;
28     }
29     //printf("ans16 = %d\n", ans);
30     return ans;
31 }
32 
33 int getShier(int  t)
34 {
35     int ans = 0;
36     t = n;
37     while(t)
38     {
39         ans += t%12;
40         t /= 12;
41     }
42     //printf("ans12 = %d\n", ans);
43     return ans;
44 }
45 
46 int main()
47 {
48     int a, b, c;
49     while(~scanf("%d", &n) && n)
50     {
51         a = getShi(n), b = getShiliu(n), c = getShier(n);
52         if(a == b && b == c) //刚开始,直接用a==b==c判断,是不对的,原因自己思考。
53             printf("%d is a Sky Number.\n", n);
54         else printf("%d is not a Sky Number.\n", n);
55     }
56     return 0;
57 }
View Code

 

HDU Sky数 2097

标签:

原文地址:http://www.cnblogs.com/loveprincess/p/4817678.html

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