我的代码在SPOJ中显示"错误输出",尽管它在我的编译器中运行没有问题.
该计划的代码是:
#include<stdio.h>
int factorial(int);
int main(){
int a[100],t,n,i;
scanf("%d",&t);
for(i=0;i<t;i++){
scanf("%d",&a[i]);
}
for(i=0;i<t;i++){
printf("%d",factorial(a[i]));
printf("\n");
}
return 0;
}
int factorial(int n){
if(n==0){
return 1;
}
else if(n==1){
return 1;
}
else{
return n*factorial(n-1);
}
}
Run Code Online (Sandbox Code Playgroud)
你的程序正在整数溢出.你需要至少66个字节才能存储100个!究竟.An unsigned long long int通常为8个字节,最多可存储1.8×10 19.100!约为9.3×10 157.
您需要另一种方法来计算此值,或使用其他语言.您可以尝试将值存储在一个double或中long double,但这并不准确,所以我怀疑它会满足SPOJ.
| 归档时间: |
|
| 查看次数: |
235 次 |
| 最近记录: |