蓝桥杯 ADV-185 算法提高 五次方数

算法提高 五次方数  

时间限制:1.0s   内存限制:256.0MB

问题描述

  对一个数十进制表示时的每一位数字乘五次方再求和,会得到一个数的五次方数
  例如:1024的五次方数为1+0+32+1024=1057
  有这样一些神奇的数,它的五次方数就是它自己,而且这样的数竟然只有有限多个
  从小到大输出所有这样的数

输出格式

  每个数独立一行输出

样例输出

10
200
3000

分析:首先9^5 = 59049,于是999999的五次方数为59049 \times 6 = 354294,所以要求的数不会是七位数以及更大的数。

#include <stdio.h>

int powerof5(int x)
{
    int prod = 1;
    for (int i = 1; i <= 5; ++i)
        prod *= x;
    return prod;
}

int main()
{
    for (int i = 2; i <= 999999; ++i)
    {
        int dump = i, sum = 0;
        while (dump)
        {
            sum += powerof5(dump % 10);
            dump /= 10;
        }
        if (sum == i)
            printf("%d\n", i);
    }

    return 0;
}
发布了298 篇原创文章 · 获赞 43 · 访问量 4万+

猜你喜欢

转载自blog.csdn.net/liulizhi1996/article/details/104202930