Contents
Problem
題目網址
中文網址
Solution
用 unordered_set
來判斷數字是否已出現過,如果已經出現過,代表接下來會繼續循環,不會產生 1 ,也就不是 happy number 了。
Code
UVa 10591UVa 10591 - Happy Number
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46
|
#include<unordered_set> using namespace std;
int () { int Case; scanf("%d", &Case);
unordered_set<int> s; for (int i = 1; i <= Case; i++) { s.clear(); int n, m; bool flag = false; scanf("%d", &n); m = n;
while (!s.count(n)) { if (n == 1) { flag = true; break; } s.insert(n);
int sum = 0; while (n) { int temp = n % 10; sum += temp*temp; n /= 10; } n = sum; }
printf("Case #%d: %d is ", i, m); if (flag) puts("a Happy number."); else puts("an Unhappy number."); } return 0; }
|
近期评论