【2097 Sky数】

1656 ワード

Sky数
Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 10738    Accepted Submission(s): 6260
Problem Description
Skyは小さい頃から奇抜なものが好きで、しかも生まれつき数字に敏感で、偶然の機会に、彼は1つの面白い4桁の2992を発見して、この数、その10進数は表して、その4桁の数字の和は2+9+9+2=22で、その16進数BB 0、その4桁の数字の和も22で、同時にその12進数は1894を表して、その4桁の数字の和も22で、ああ、偶然ですね.Skyはこの4桁が大好きで、彼の発見のため、ここではSky数と命名しました.しかし、このような数を判断するのはちょっと面倒ですね.では、今、10進数の4桁を判断してください.Sky数ではありませんか.
 
Input
入力には4桁の正の整数が含まれ、0の場合は入力が終了します.
 
Output
nがSky数であれば「#n is a Sky Number.」を出力し、そうでなければ「#n is not a Sky Number.」を出力する.各結果は1行を占めます.注意:#nは、読み込まれたn値を表します.
 
Sample Input

   
   
   
   
2992 1234 0

 
Sample Output

   
   
   
   
2992 is a Sky Number. 1234 is not a Sky Number.

 
#include<iostream>
using namespace std;
int fun(int n,int k){
	int m,sum=0;
	while(n){
		m=n%k;
		n/=k;
		sum+=m;
	}
	return sum;
}

int main(){
	int n;
	while(cin>>n && n!=0){
		int sum1,sum2,sum3;
		sum1=fun(n,10);
		sum2=fun(n,16);
		sum3=fun(n,12);
		if(sum1==sum2 && sum2==sum3)
			cout<<n<<" is a Sky Number."<<endl;
		else
			cout<<n<<" is not a Sky Number."<<endl;
	}
}