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;
}
答案 0 :(得分:2)
printf
和scanf
未定义。您需要包含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多个数字作为答案。考虑使用数组来存储每个小数。