Sky number

描述
key 天生对数字特别敏感,一次偶然的机会,他发现了一个有趣的四位数2992,这个数,它的十进制数表示,其四位数字之和为2+9+9+2=22,它的十六进 制数BB0,其四位数字之和也为22,同时它的十二进制数表示1894,其四位数字之和也为22。key非常喜欢这种四位数(三种进制的和相等),由于他 的发现,所以这里我们命名其为key数。但是要判断这样的数还是有点麻烦啊,那么现在请你帮忙来判断任何一个十进制的四位数,是不是key数吧。
输入
输入含有一些四位正整数,如果为0,则输入结束。
输出
若n为Sky数,则输出“#n is a sky Number.”,否则输出“#n is not a sky Number.”。每个结果占一行。注意:#n表示所读入的n值。
样例输入
2992
1234
0
样例输出
2992 is a Sky Number.
1234 is not a Sky Number.
 1 #include <stdio.h>
 2
 3 int sum(int number,int p);
 4
 5 int main(){
 6     int n;
 7     int sum_10;
 8     int sum_12;
 9     int sum_16;
10
11     while(1){
12         scanf("%d",&n);
13
14         if(n==0)
15             break;
16
17         sum_10=sum(n,10);
18         sum_12=sum(n,12);
19         sum_16=sum(n,16);
20
21         if(sum_10==sum_12 && sum_10==sum_16)
22             printf("%d is a Sky Number.\n",n);
23
24         else
25             printf("%d is not a Sky Number.\n",n);
26     }
27     return 0;
28 }
29
30 int sum(int number,int p){
31     int result;
32
33     result=0;
34     while(number){
35         result+=number%p;
36         number/=p;
37     }
38
39     return result;
40 }

时间: 2024-12-14 12:41:13

Sky number的相关文章

HDU Sky数 2097

解题思路:类比求出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

NYOJ-Sky number

Sky number 时间限制:1000 ms  |  内存限制:65535 KB 难度:1 描述 key天生对数字特别敏感,一次偶然的机会,他发现了一个有趣的四位数2992,这个数,它的十进制数表示,其四位数字之和为2+9+9+2=22,它的十六进制数BB0,其四位数字之和也为22,同时它的十二进制数表示1894,其四位数字之和也为22.key非常喜欢这种四位数(三种进制的和相等),由于他的发现,所以这里我们命名其为key数.但是要判断这样的数还是有点麻烦啊,那么现在请你帮忙来判断任何一个十进

Sky数

Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 16448    Accepted Submission(s): 9444 Problem Description Sky从小喜欢奇特的东西,并且天生对数字特别敏感.一次偶然的机会,他发现了一个有趣的四位数2992,这个数,它的十进制数表示,其四位数字之和为2+9+9+2=22,它的十六进

HDU2097 Sky数

问题链接:HDU2097 Sky数.入门练习题,用C语言编写程序. 进制转换问题,通常用除运算(/)和取余数运算(%)来实现. 程序中,使用数组scale[]是为了提高程序的通用性.改变该数组的内容,就可以改变程序的功能,而不需要修改程序. AC的C语言程序如下: /* HDU2097 Sky数 */ #include <stdio.h> // 数字之和:将10进制的val转为base进制,并对各位求和 int digitsum(int val, int base) { int sum = 0

hdu2097 nyoj414 sky数 (进制转换)

Sky number 时间限制:1000 ms  |  内存限制:65535 KB 难度:1 描述 key天生对数字特别敏感,一次偶然的机会,他发现了一个有趣的四位数2992,这个数,它的十进制数表示,其四位数字之和为2+9+9+2=22,它的十六进制数BB0,其四位数字之和也为22,同时它的十二进制数表示1894,其四位数字之和也为22.key非常喜欢这种四位数(三种进制的和相等),由于他的发现,所以这里我们命名其为key数.但是要判断这样的数还是有点麻烦啊,那么现在请你帮忙来判断任何一个十进

HDU ACM 2097 Sky数

计算出进制和即可. #include<iostream> using namespace std; int GetSum(int x,int n) { int sum=0; while(x) { sum+=x%n; x/=n; } return sum; } int main() { int n; while(cin>>n &&n) { if(GetSum(n,10)==GetSum(n,16) &&GetSum(n,12)==GetSum(n,16

HDU2097 Sky数【水题】

Sky数 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 15189    Accepted Submission(s): 8733 Problem Description Sky从小喜欢奇特的东西,而且天生对数字特别敏感,一次偶然的机会,他发现了一个有趣的四位数2992,这个数,它的十进制数表示,其四位数字之和为2+9+9+2=22,

HDU Sky数 2079 简单易懂的代码

题目 http://acm.hdu.edu.cn/showproblem.php?pid=2097 思路 既然要求和 十进制数字各个位数上的和是相同的, 那么16,12进制转换完之后也是10进制表示的 #include <iostream> #include <queue> #include <cstdio> #include <cstring> #include <cstdlib> #include <stack> using na

(java实现)杭电oj 2097 Sky数

就是简单的求出各进制之和,比较是否相等就好了 Sky数 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 20822    Accepted Submission(s): 11865 Problem Description Sky从小喜欢奇特的东西,而且天生对数字特别敏感,一次偶然的机会,他发现了一个有趣的四位数2992,这个数,它的十进制