首页 > 其他 > 详细

【ACM】----杭电oj 2097

时间:2015-02-12 22:52:30      阅读:534      评论:0      收藏:0      [点我收藏+]

Sky数

Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 15579    Accepted Submission(s): 8981


Problem 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.
#include<stdio.h>
int main()
{
	int n;
	int g,s,b,q,sk=0;
	int se[4],i,ak,m;
	int sl[4],j,bk,l;
	while(scanf(\"%d\",&n)!=EOF && n!=0)
	{
	/*************十进制**************/
		
		q=n/1000;
		b=n%1000/100;
		s=n%1000%100/10;
		g=n%1000%100%10;
		sk=q+b+s+g;

	/************十二进制*************/

		ak=0;	m=n;
		for(i=0;m!=0;i++)
		{
			se[i]=m%12;
			m=m/12;
		}
		for(;i!=0;i--)
			ak+=se[i-1];

	/************十六进制**************/

		bk=0;	l=n;
		for(j=0;l!=0;j++)
		{
			sl[j]=l%16;
			l=l/16;
		}
		for(;j!=0;j--)
			bk+=sl[j-1];

	/************判断Sky***************/

		if(bk==ak && ak==sk)
			printf(\"%d is a Sky Number.\\n\",n);
		else
			printf(\"%d is not a Sky Number.\\n\",n);
	}
	return 0;
}

【ACM】----杭电oj 2097

原文:http://blog.csdn.net/u013224148/article/details/43766869

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!