题目大意
我们定义“破坏”整数的过程是对其每一位上的数字的平方求和成为一个新数,如果一个数在经过若干次“破坏”以后变成了 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都进不去,等过几天再提交吧…