平方怪圈

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;
}

 

以上是关于平方怪圈的主要内容,如果未能解决你的问题,请参考以下文章

从 matlab 中的 imfindcircles 检测到的麦田怪圈

打破中国企业类软件成长的怪圈,我找到了方法!

哈斯克尔。我很困惑这个代码片段是如何工作的

自建遥感AI模型 探索沙漠中的绿色怪圈

编程怪圈

如何用二分法求平方根???