码迷,mamicode.com
首页 > 其他好文 > 详细

平方怪圈

时间:2019-03-20 20:38:20      阅读:350      评论:0      收藏:0      [点我收藏+]

标签:注意   答案   name   提交   mes   ios   inpu   long   内容   

如果把一个正整数的每一位都平方后再求和,得到一个新的正整数。
对新产生的正整数再做同样的处理。

如此一来,你会发现,不管开始取的是什么数字,
最终如果不是落入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;
}

 

平方怪圈

标签:注意   答案   name   提交   mes   ios   inpu   long   内容   

原文地址:https://www.cnblogs.com/8023spz/p/10567357.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!