点击打开链接
题目意思: 给定一个数n,然后进行操作,先求出这个数每一位的平方和,然后这个和替代n继续做这个操作,知道当前的n为1 或 n之前以经出现过 ,如果n等于则是happy number ,反之不是。
解题思路: 暴力搜素+状态判重。
对于这一题一个状态就是这个数字n,由于最大的n是10^9,那么平方和最大不超过1000,我们开一个vis[1000]数组来做为标记数组即可,当遇到n 初始值 或 vis[n] = 1则退出,初始化vis[1] = 1;
代码:
#include <algorithm>
#include <iostream>
#include <cstring>
#include <string>
#include <vector>
#include <cstdio>
#include <stack>
#include <queue>
#include <cmath>
using namespace std;
#define MAXN 10000
int vis[MAXN];
int main(){
//freopen("input.txt" , "r" , stdin);
int sum , flag , cnt;
int i , n , m;
scanf("%d%*c" , &cnt);
for(i = 1 ; i <= cnt ; i++){
scanf("%d" , &n);
memset(vis , 0 , sizeof(vis));
flag = 0 ; m = n ; vis[1] = 1;
while(1){
sum = 0;
for(int j = n ; j !=0 ; j = n){
int t = n%10;
sum += t*t;
n /= 10;
}
n = sum ;
if(vis[n] || n == m){
if(n == 1) flag = 1;
break;
}
vis[n] = 1;
}
if(flag) printf("Case #%d: %d is a Happy number.\n" , i , m);
else printf("Case #%d: %d is an Unhappy number.\n" , i , m);
}
return 0;
}
分享到:
相关推荐
判断输入字符串是否为镜像或回文串。 来源于UVaOJ - 401. 水题。
开源项目-codingsince1985-UVa#uva-online-judge-solutions-in-golang.zip,两年来每天都在解决一个uva在线裁判问题,算起来…
uva705 Slash Maze 的代码,在UVaOJ上通过
PDF试题
uva532 Dungeon Master的源代码,并且AC了
Algorithm-UVA-Solutions-in-Python.zip,python 3中各种uva(acm)问题的解决方案。,算法是为计算机程序高效、彻底地完成任务而创建的一组详细的准则。
这是UVA133 TheDoleQueue救济金发放问题,经典的算法问题。初学算法的人要对这种算法非常熟悉并且能熟练运用。
tpcw-nyu-uva-client 客户端
leetcode 2 算法-Java UVa Online Judge(ACM-ICPC Live ...使用:数组、哈希表、链表、二分搜索、动态规划、堆栈、堆、reedy、排序、树 DFS、BFS、图、二分搜索树、递归、记忆、队列、映射等。...Uva-ACM-ICPC