LQ0050 平方怪圈模拟+进制

Posted 海岛Blog

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LQ0050 平方怪圈模拟+进制相关的知识,希望对你有一定的参考价值。

题目来源:蓝桥杯2016初赛 C++ C组F题

题目描述
如果把一个正整数的每一位都平方后再求和,得到一个新的正整数。对新产生的正整数再做同样的处理。
如此一来,你会发现,不管开始取的是什么数字,最终如果不是落入1,就是落入同一个循环圈。
请写出这个循环圈中最大的那个数字。

输出格式
输出答案即可

问题分析
这是一个模拟计算题,程序中从2算起。
程序算得结果是145。

AC的C语言程序如下:

/* LQ0050 平方怪圈 */

#include <stdio.h>
#include <string.h>

#define N 999 + 1
int vis[N];

int main()

    memset(vis, 0, sizeof vis);

    int maxa = 0, a = 2;
    for (; ;) 
        if (vis[a]) break;
        vis[a] = 1;
        int sum = 0;
        while (a) 
            int r = a % 10;
            a /= 10;
            sum += r * r;
        
        if (sum > maxa) maxa = sum;
        a = sum;
    

    printf("%d\\n", maxa);

    return 0;

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

编程怪圈

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

陷入悖论怪圈的NFT

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

新零售风口之下,母婴行业该如何避免陷入同质化怪圈?

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