解题思路:一开始只是超时,然后又是结果错误,感觉应该是大数的时候出了问题,对比了一下自己和他人的解法,发现自己并没有用一些比较高级的函数库。
我自我觉得应该注意的一个问题就是怎么防止死循环,所以你在看我的代码的时候其实是不完美的,可以用抽屉原理保证一旦循环次数超过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分
1 人评分
C二级辅导-计负均正 (C语言代码)浏览:643 |
2006年春浙江省计算机等级考试二级C 编程题(2) (C语言代码)浏览:502 |
C语言训练-计算一个整数N的阶乘 (C语言代码)浏览:986 |
大小写转换 (C语言代码)浏览:904 |
C语言程序设计教程(第三版)课后习题8.5 (C语言代码)浏览:600 |
C语言程序设计教程(第三版)课后习题6.3 (C语言代码)from DQM浏览:773 |
C二级辅导-同因查找 (C语言代码)浏览:618 |
分糖果 (C语言代码)浏览:980 |
C语言程序设计教程(第三版)课后习题11.3 (C语言代码)浏览:2207 |
C语言程序设计教程(第三版)课后习题1.5 (C语言代码)浏览:527 |