UVA - 10591Happy Number

来源:互联网 发布:excel vba sql查询 编辑:程序博客网 时间:2024/05/16 15:43

题目大意:对一个数一直求其各个位数上的平方和,最终为 1 就是 happy number
解题思路:vis 数组判重,思路也简单。对于最大数 999999999 的各个位数平方和也只有 729,vis 开个1000 足够。把数据想得太大 TLE 一次。

#include<iostream> #include<cstdio>#include<cmath>#include<string.h>#include<stdlib.h>#include<algorithm>#include<queue>#include<map>using namespace std;bool vis[1000];int cnt = 0;int main() {    int T;    int N;    scanf("%d", &T);    while (T--) {        memset(vis, false, sizeof(vis));        scanf("%d", &N);        printf("Case #%d: %d is ",++cnt, N);        int sum = 0;        while (N) {            sum += (N % 10) * (N % 10);            N /= 10;        }        N = sum;        while (N != 1 && !vis[N]) {            vis[N] = true;            sum = 0;            while (N) {                sum += (N % 10) * (N % 10);                N /= 10;            }            N = sum;        }        if (N == 1) printf("a Happy number.\n");        else printf("an Unhappy number.\n");    }return 0;}
0 0