CODE:

#include <iostream>
#include <cstdlib>
#include <cstdio>
#include <cstring>
#include <set>
using namespace std;

set<int> vis;

void init()
{
    vis.clear();
}

int getNumber(int n)
{
    int s = 0;
    while(n)
    {
        s += (n%10)*(n%10);
        n /= 10;
    }
    return s;
}

int main()
{
    int times = 0;
    int T, ans, n;
    scanf("%d", &T);
    while(T--)
    {
        init();
        int flag = 1;
        scanf("%d", &n);
        vis.insert(n);
        ans = n;
        for(;;)
        {
            ans = getNumber(ans);
            if(ans == 1break;
            else
            {
                if(!vis.count(ans)) vis.insert(ans);
                else
                {
                    flag = 0;
                    break;
                }
            }
        }
        printf("Case #%d: ", ++times);
        if(flag) printf("%d is a Happy number.\n", n);
        else printf("%d is an Unhappy number.\n", n);
    }
    return 0;
}

 

 

posted on 2012-10-11 13:34  有间博客  阅读(211)  评论(0编辑  收藏  举报