• 平方怪圈


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

    如此一来,你会发现,不管开始取的是什么数字,
    最终如果不是落入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;
    }
  • 相关阅读:
    关于证书
    title向左_右滚动效果
    js标题滚动效果
    js小结
    javascript数组以及对象
    javascript数据类型转换
    javascript变量作用域
    sqlldr
    java 配置文件读取
    hbase 协处理器
  • 原文地址:https://www.cnblogs.com/8023spz/p/10567357.html
Copyright © 2020-2023  润新知