平方怪圈
Posted 8023spz
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了平方怪圈相关的知识,希望对你有一定的参考价值。
如果把一个正整数的每一位都平方后再求和,得到一个新的正整数。
对新产生的正整数再做同样的处理。
如此一来,你会发现,不管开始取的是什么数字,
最终如果不是落入1,就是落入同一个循环圈。
请写出这个循环圈中最大的那个数字。
请填写该最大数字。
注意:你提交的应该是一个整数,不要填写任何多余的内容或说明性文字。
答案:
代码:
#include <iostream> #include <cstdio> #include <algorithm> #include <map> using namespace std; typedef long long ll; ll n; map<int,int> mp; int d = 0; int get(ll a) { int sum = 0; while(a) { sum += (a % 10) * (a % 10); a /= 10; } return sum; } int s[100000],c; int main() { cin>>n; int t = get(n); while(!mp[t]) { mp[t] = ++ c; s[c] = t; t = get(t); } for(int i = mp[t];i <= c;i ++) { d = max(d,s[i]); } cout<<d<<endl; }
以上是关于平方怪圈的主要内容,如果未能解决你的问题,请参考以下文章