[英]This code is running perfectly in codeblocks but giving a runtime error on ideone.com
[英]trailing zeros in a factorial.when i run it on ideone.com i'm getting runtime error with infinite output. Even SPOJ is also not accepting
#include <iostream>
#include <cmath>
using namespace std;
int func(int n){
int count=0;
float t=log(n)*0.621;
int k=(int)t;
int temp;
for(int i=1;i<=k;i++){
int power=1;
for(int j=0;j<i;j++){
power=power*5;
}
temp=(int)(n/power);
count=count+temp;
}
return count;
}
int main(){
int t;
cin>>t;
for (int i=0;i<t;i++){
int n;
cin>>n;
cout<<func(n)<<'\n';
}
return 0;
}
我得到一些测试用例的正确答案。我在ideone中遇到的错误是运行时错误时间:0内存:3100信号:25
33628713 33628713 33628713 33628713 33628713 33628713
无输入时输出无限
我不知道对数在代码中的作用。 您以某种方式使用它来确定何时停止除以5的幂。这似乎是一个近似值,并且如果有时您仅获得正确的答案,那么我希望近似值的不准确性会对您造成不利影响。
您不需要对数。 当您确定不再有5的幂的因子时,可以简单地停止循环。 考虑一下如何使用已经计算出的值来检测到这一点。
您不需要任何近似值。 Purplemath上的页面解释并演示了如何计算阶乘数中尾随零的数量。 阅读本文,看看您是否可以识别其中描述的技术与代码的各个部分的对应关系,还请注意该页面上没有涉及对数。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.