解题思路:一开始只是超时,然后又是结果错误,感觉应该是大数的时候出了问题,对比了一下自己和他人的解法,发现自己并没有用一些比较高级的函数库。
我自我觉得应该注意的一个问题就是怎么防止死循环,所以你在看我的代码的时候其实是不完美的,可以用抽屉原理保证一旦循环次数超过10的k次方还没有得出结果,那他一定没有循环次数,就应该输出-1.
注意事项:如果哪位大佬能看出错误,请赐教
参考代码:
#include<stdio.h>
#include<math.h>
int main()
{
int n,k,i;
scanf("%d %d",&n,&k);
int X=0,N,M=n;
int c=(int)pow(10,k);
N=n%c;
//求n的k次方的k位尾数
for(i=2;N!=(X)&&(i<=c+5);i++)//此处不完美,但是保险一点把吧
{
M=n*M;//代替了pow(n,i)
X=M%c;
}
if(N==X)
{
printf("%d",i-2);
}
else printf("-1");
return 0;
}
0.0分
0 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复