1. 程式人生 > >HDU 2097 sky數 (進制轉化)

HDU 2097 sky數 (進制轉化)

href name 轉換 如果 十進制數 using http 喜歡 its

傳送門:

Sky數

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


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.

Source 2007省賽集訓隊練習賽(2) 分析: 先把他們十進制的和,十六進制的和,12進制的和求出來,如何比較是否相等即可 重要知識點: 進制的轉換(一種很好很容易懂的代碼格式) code:
#include<bits/stdc++.h>
using
namespace std; typedef long long ll; int ten(int x) { int sum=0; while(x) { sum+=x%10; x=x/10; } return sum; } int sixth(int x) { int sum=0; while(x) { sum+=x%16; x=x/16; } return sum; } int twelve(int x) { int sum=0; while(x) { sum
+=x%12; x=x/12; } return sum; } int main() { int n; while(~scanf("%d",&n)) { if(n==0) break; int a=ten(n); int b=sixth(n); int c=twelve(n); if(a==b&&b==c) { printf("%d is a Sky Number.\n",n); }else { printf("%d is not a Sky Number.\n",n); } } return 0; }

HDU 2097 sky數 (進制轉化)