题目大意
我们定义“破坏”整数的过程是对其每一位上的数字的平方求和成为一个新数,如果一个数在经过若干次“破坏”以后变成了 1,那么这个数就是一个高兴的数字,输出变化次数,否则如果永远不会变成 1,输出 −1。
例如:
19→12+92→82→82+22→68→62+82→100→12+02+02→1
204→20→4→16→37→58→89→145→42→20→4→16……
输入输出样例
输入 19 输出 4
(输入 2 输出 -1)
思路
懒人—看我的文章吧,下面只是小改
UVA10591 Happy Number(快乐数)
修改过程
1.将多组数据去掉
2.在每次循环,将n=sum的时候,ct++
3.输出修改
#include<bits/stdc++.h>
using namespace std;
int t,n,ct;
bool isHappy()
{unordered_set<int>seen;while(n!=1&&seen.find(n)==seen.end()){seen.insert(n);int sum=0;for(int i=n;i>0;i/=10){int digit=i%10;sum+=digit*digit;}n=sum;ct++;}return n==1;
}
int main()
{ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);cin>>n;if(isHappy()){cout<<ct;}else{cout<<"-1";}return 0;
}
没有办法提交。在洛谷
RequestError: error sending request for url (https://www.spoj.com/login): error trying to connect: tcp connect error: Connection timed out (os error 110)
SPOJ都进不去,等过几天再提交吧…