2016年蓝桥杯省赛c组填空题 平方怪圈 知识点:拆位,枚举

91 阅读1分钟

1.平方怪圈 - 蓝桥云课 (lanqiao.cn)

视频解析:2016-C-C题3平方怪圈_哔哩哔哩_bilibili

思想

根据画图我们发现 从3开始,每次对每一位进行平方求和,当值变为37的时候开始进入循环。在循环当中,最大值是145. image.png

用代码怎么写呢,首先用变量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;
 } 

image.png