#include <cstdio> #include <cstring> using namespace std; int Hash[730]; int digitsum(int n) { int sum = 0; while (n) { sum += (n%10) * (n%10); n /= 10; } return sum; } int HappyNumber(int n) { if (Hash[n] != -1) return Hash[n]; bool flag[730] = {false}; while (1) { if (n == 1) return true; if (!flag[n]) flag[n] = true; else { Hash[n] = false; return false; } n = digitsum(n); } return false; } int main() { int num; scanf("%d",&num); memset(Hash, -1, sizeof(Hash)); for (int i = 1; i <= num; ++i) { int n,temp; scanf("%d",&n); bool yes = HappyNumber(digitsum(n)); if (n < 730) Hash[n] = yes; if (yes) printf("Case #%d: %d is a Happy number./n",i,n); else printf("Case #%d: %d is an Unhappy number./n",i,n); } return 0; }