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. 1234 is not a Sky Number.
题解:进制转换 10->16, 10->12,再求出各位之和。详见代码。
1 #include <cstdio> 2 #include <cstring> 3 4 int sum(int n, int m) 5 { 6 int tmp = 0; 7 while(n > 0) 8 { 9 tmp += n % m; 10 n /= m; 11 } 12 return tmp; 13 } 14 15 int main() 16 { 17 #ifdef CDZSC_OFFLINE 18 freopen("in.txt", "r", stdin); 19 freopen("out.txt", "w", stdout); 20 #endif 21 int n, a, b, c; 22 while(~scanf("%d", &n) && n) 23 { 24 a = sum(n, 10); 25 b = sum(n, 16); 26 c = sum(n, 12); 27 printf("%d%s\n", n, (a == b && a == c) ? " is a Sky Number." : " is not a Sky Number."); 28 } 29 return 0; 30 }
时间: 2024-12-18 12:59:01