SPOJ-小因子

时间:2015-01-10 09:44:25

标签: c

http://www.spoj.com/problems/FCTRL2/
我的代码显示了Spoj中的编译错误,尽管在我的编译器中运行准确 ** IDE - 代码块**

int cal(int );


int main()
{
  int i,t;
  int n[100];
  scanf("%d",&t);
   for(i=0;i<t;i++)
    {
       scanf("%d",&n[i]);
    }

for(i=0;i<t;i++)
{
  printf("%d",cal(n[i]));
  printf("\n");
}
return 0;
}
int cal(int x)
{
  int j,a=1;
 for(j=x;j>=1;j--)
 {
 a=a*j;


 }
 return a;


}

2 个答案:

答案 0 :(得分:2)

printfscanf未定义。您需要包含stdio库。

我在本地收到此错误:

test.c: In function ‘main’:
test.c:8:9: warning: incompatible implicit declaration of built-in function ‘scanf’
         scanf("%d",&t);
         ^
test.c:16:16: warning: incompatible implicit declaration of built-in function ‘printf’
                printf("%d",cal(n[i]));
                ^

答案 1 :(得分:0)

对于每个整数输入,您必须计算阶乘。这在python或java等语言中非常简单,它们内置了对大整数类型的支持。虽然它给使用C / C ++的人或没有内置大整数类型的语言带来了艰难的时间。

现在,可以存储在无符号32位整数中的最大数量是2 ^ 32 - 1,而无符号64位整数中的最大数量是2 ^ 64 - 1.类似于100!有超过150个十进制数字。前面提到的数据类型可以存储分别具有最多9位和19位十进制数字的数字。因此,您需要找到一种方法来存储我们将获得的150多个数字作为答案。考虑使用数组来存储每个小数。