uva 10591 - Happy Number

简介: 点击打开链接 题目意思:  给定一个数n,然后进行操作,先求出这个数每一位的平方和,然后这个和替代n继续做这个操作,知道当前的n为1 或 n之前以经出现过 ,如果n等于则是happy number ,反之不是。

点击打开链接


题目意思:  给定一个数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;
}



目录
相关文章
LeetCode 202. Happy Number
一个“快乐数”定义为:对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和,然后重复这个过程直到这个数变为 1,也可能是无限循环但始终变不到 1。如果可以变为 1,那么这个数就是快乐数。
97 0
LeetCode 202. Happy Number
|
机器学习/深度学习
LeetCode之Happy Number
LeetCode之Happy Number
130 0
|
Java Python
LeetCode 202: 快乐数 Happy Number
题目: 编写一个算法来判断一个数是不是 “快乐数”。 一个 “快乐数” 定义为:对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和,然后重复这个过程直到这个数变为 1,也可能是无限循环但始终变不到 1。
1160 0
|
机器学习/深度学习
|
算法
LeetCode 202 Happy Number(开心数)(vector、unordered_set)
版权声明:转载请联系本人,感谢配合!本站地址:http://blog.csdn.net/nomasp https://blog.csdn.net/NoMasp/article/details/50541011 翻译 写一个算法来决定一个数是否是“开心”的。
1005 0
|
7月前
|
算法
Leetcode 313. Super Ugly Number
题目翻译成中文是『超级丑数』,啥叫丑数?丑数就是素因子只有2,3,5的数,7 14 21不是丑数,因为他们都有7这个素数。 这里的超级丑数只是对丑数的一个扩展,超级丑数的素因子不再仅限于2 3 5,而是由题目给定一个素数数组。与朴素丑数算法相比,只是将素因子变了而已,解法还是和朴素丑数一致的。
73 1
|
20天前
|
存储 SQL 算法
LeetCode 题目 65:有效数字(Valid Number)【python】
LeetCode 题目 65:有效数字(Valid Number)【python】
|
1月前
|
存储 算法
【LeetCode力扣】单调栈解决Next Greater Number(下一个更大值)问题
【LeetCode力扣】单调栈解决Next Greater Number(下一个更大值)问题
16 0