LQ0156 立方变自身枚举

Posted 海岛Blog

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LQ0156 立方变自身枚举相关的知识,希望对你有一定的参考价值。

题目来源:蓝桥杯2015初赛 Java B组B题

题目描述
本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。

观察下面的现象,某个数字的立方,按位累加仍然等于自身。

1^3 = 1 
8^3  = 512    5+1+2=8
17^3 = 4913   4+9+1+3=17
...

请你计算包括 1,8,171,8,17 在内,符合这个性质的正整数一共有多少个?

问题分析
这个问题用枚举法来做,似乎需要做无限的计算,但是对于n3,n一般是小于或等于立方的各位之和,按这个条件搜索即可。需要注意这个计算比较费时,计算的结果为6。
填空题,所以程序中只需要一句“printf(“6\\n”);”就可以了。

AC的C语言程序如下:

/* LQ0156 立方变自身 */

#include <stdio.h>

//#define DEBUG

int main()

#ifdef DEBUG
    int cnt = 0;
    for (int i = 1; ;i++) 
        int t = i * i * i;
        int sum = 0;
        while (t)
            sum += t % 10, t /= 10;
        if (sum == i) cnt++;
        if (sum < t) break;
    

    printf("%d\\n", cnt);
#else
    printf("6\\n");
#endif
    return 0;

以上是关于LQ0156 立方变自身枚举的主要内容,如果未能解决你的问题,请参考以下文章

LQ0162 立方尾不变枚举

立方变自身

立方变自身

每日算法之立方变自身

2015年第六届蓝桥杯 - 省赛 - Java大学B组 - B. 立方变自身

2015年第六届蓝桥杯 - 省赛 - Java大学B组 - B. 立方变自身