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 平方怪圈模拟+进制的主要内容,如果未能解决你的问题,请参考以下文章