简单的查重题目。
#include <stdio.h>
#include <set>
using namespace std;
set<long long> visited;
void func(int data, int case_count)
{
long long n;
long long sum;
visited.clear();
n = data;
visited.insert(n);
while(1)
{
sum = 0;
while(1)
{
if(n == 0)
break;
sum += (n%10) * (n%10);
n = n/10;
}
n = sum;
if(n == 1)
break;
if(visited.find(n) == visited.end())
{
visited.insert(n);
}
else
{
break;
}
}
if(1 == n)
printf("Case #%d: %d is a Happy number.\n", case_count, data);
else
printf("Case #%d: %d is an Unhappy number.\n", case_count, data);
}
int main(void)
{
int n, i;
int data;
//freopen("input.dat", "r", stdin);
scanf("%d", &n);
for(i=1; i<=n; i++)
{
scanf("%d", &data);
func(data, i);
}
}