置顶
老师参与
自己写的函数pow(a,b)更快吗?
蒲江三哥
发表于2020年03月23日
#include <stdio.h>
int pow(int a,int b);
int main()
{
int n,s=0,i;
scanf("%d",&n);
int a,b,j;
a=(int)pow(10,n-1);
b=(int)pow(10,n);
for (i=a;i<=b;i++)
{
j=i;
s=0;
while (j)
{
s+=pow(j%10,n);
j=j/10;
}
if (s==i) printf("%d\n",i);
}
return 0;
}
int pow(int a,int b)
{
int t=1,i=0;
for (i;i<b;i++) t=t*a;
return t;
}
以上依次是拼题A上面的一道题的代码,提交结果与题目。但是我之前提交的代码只有最后一个测试点没有通过,代码的差别就是,之前的那个代码,pow(x,n)指数函数是调用<math.h>库里面的函数。然后提交一直是最后一个点测试不成功。我到网上搜索了这道题,发现他们的代码和我几乎一样,差别就是pow函数是否是自己写的。结果试了一下他们的代码,全部通过。我后面也把我自己的pow函数改成自己写的函数。结果当然也是全部通过,而且在测试6位水仙花数的时候,耗时几乎是原来的10分之一。之前是407ms,x现在是50ms。
实在太奇怪了。同时我想问,程序里面用了双层循环,有没有办法降低时间复杂度,只用一层循环?
分享
0
回复