判斷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;
}
}
}