1886i 2022-03-05 21:30 采纳率: 76.9%
浏览 827
已结题

水仙花数是指一个N位正整数(N≥3),它的每个位上的数字的N次幂之和等于它本身。例如:153=1 3 +5 3 +3 3 。 本题要求编写程序,计算所有N位水仙花数。

请问一下在pta里这个问题代码如下为什么会有一组数据运行超时


```c
#include<stdio.h>
#include<math.h>

int i1(int x,int N)
{
    int a=0,sum=x,p=0;
    while(x)
    {
        a=x%10;
        x=x/10;
        p+=pow(a,N);
    }
    if(p==sum)
    {
        return 1;
    }
    else
    {
        return 0;
    }
}

int main()
{
    int n = 0;
    scanf("%d", &n);
    int i=0;
    for (i = pow(10, n - 1); i < pow(10, n); i++)
    {
        if(i1(i,n)==1)
        {
            printf("%d\n",i);
        }
    }
    return 0;
}

```

  • 写回答

1条回答 默认 最新

  • qzjhjxj 2022-03-05 22:19
    关注

    这么改下试试:

    #include<stdio.h>
    #include<math.h>
    int main()
    {
        int N,i,p,t,sum,n,m,k;
        scanf("%d",&N);
        p = pow(10,N);
        for(i = pow(10,N-1);i < p;i++){
            for(sum=0,t=i;t>0;t/=10){
                m=N;k=1;
                n = t%10;
                while(m--)k*=n;
                sum+= k;
            }
            if(sum==i)
               printf("%d\n",i);
        }
        return 0;
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 3月14日
  • 已采纳回答 3月6日
  • 创建了问题 3月5日

悬赏问题

  • ¥15 R语言Rstudio突然无法启动
  • ¥15 关于#matlab#的问题:提取2个图像的变量作为另外一个图像像元的移动量,计算新的位置创建新的图像并提取第二个图像的变量到新的图像
  • ¥15 改算法,照着压缩包里边,参考其他代码封装的格式 写到main函数里
  • ¥15 用windows做服务的同志有吗
  • ¥60 求一个简单的网页(标签-安全|关键词-上传)
  • ¥35 lstm时间序列共享单车预测,loss值优化,参数优化算法
  • ¥15 Python中的request,如何使用ssr节点,通过代理requests网页。本人在泰国,需要用大陆ip才能玩网页游戏,合法合规。
  • ¥100 为什么这个恒流源电路不能恒流?
  • ¥15 有偿求跨组件数据流路径图
  • ¥15 写一个方法checkPerson,入参实体类Person,出参布尔值