判斷一個數是否爲Sky數

判斷Sky數

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.

解題思路:首先我是分別得到輸入的數的十二進制、十六進制及本身的數位之和,直接比較若相等即爲Sky數。

代碼:

import java.util.Scanner;
public class Main{
	public static void main(String[] args) {
		Scanner in=new Scanner(System.in);
		while(in.hasNext()){
			int number=in.nextInt();
			int sum1=0,sum2=0,sum3=0,yushu,t;
			t=number;
			if(number!=0){
				while(number>0){
				yushu=number%12;
				sum1+=yushu;
				number=number/12;
			}
			number=t;
			while(number>0){
				yushu=number%16;
				sum2+=yushu;
				number=number/16;
			}
			number=t;
			while(number>0){
				yushu=number%10;
				sum3+=yushu;
				number=number/10;
			}
			number=t;
			if(sum1==sum2&&sum2==sum3){
				System.out.println(number+" is a Sky Number.");
			}
			else{
				System.out.println(number+" is not a Sky Number.");
			}
		}
		else break;	
		}
	}
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章