SP中的SPOJ小因子计划

mah*_*mar -1 c factorial

小因子

我的代码在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)

yel*_*hil 5

你的程序正在整数溢出.你需要至少66个字节才能存储100个!究竟.An unsigned long long int通常为8个字节,最多可存储1.8×10 19.100!约为9.3×10 157.

您需要另一种方法来计算此值,或使用其他语言.您可以尝试将值存储在一个double或中long double,但这并不准确,所以我怀疑它会满足SPOJ.