视频解析:2016-C-C题3平方怪圈_哔哩哔哩_bilibili
思想
根据画图我们发现 从3开始,每次对每一位进行平方求和,当值变为37的时候开始进入循环。在循环当中,最大值是145.
用代码怎么写呢,首先用变量start存储第一位数3,先把start打印出来,然后专门写一个平方求和函数,每次都把start更新为平方求和之后的新值,打印出来,代码如下:
#include<iostream>
#include<sstream>
#include<string>
using namespace std;
int extrat(int strat)
{
//首先转换为字符串
string str;
stringstream ss;
ss<<strat;
ss>>str;
//然后进行位平方求和
int ans=0;
for(int i=0;i<str.length();i++)
{
ans+=(str[i]-'0')*(str[i]-'0');
}
return ans;
}
int main()
{
int start=3;
//循环1000次
for(int i=0;i<1000;i++)
{
cout<<start<<endl;
int sum=extrat(start); //对每一位平方求和
start=sum; //更新start
}
return 0;
}