你好,你的输入应该也是存在问题的,scanf要严格按照格式输入,int型的变量使用%d格式输入即可,如果写了64,那么输入的时候必须得输入64+你想要输入的变量的内容,前面的那个l也是没有必要的,还有输出的时候l也是没有必要的,64有点长了,一个int型的数据在32位机上也就最多占用32位,而且是二进制数,也就是说最多这个数字可以是2的31次方,根本到不了64位的十进制数。
n数组和s,j 等都是int型的,用来处理64位整型明显有问题,应改用 long long 类型。
还有,LZ你确定用64位来处理这个问题没问题吗?要知道阶乘的增长速度是超恐怖的,光21的阶乘21!就已经64位装不下了。很可能是要用到大整数吧
超限可以用内存分块,整型是32位的,你格式化输入输出的时候都是_int64,你觉得能通过吗?都改成64位的整数就可以了
#include
#include
int main()
{
int n[200];
int i,j,t,s;
scanf("%d",&t);
for(i=0;iscanf("%d",&n[i]);
for(i=0;i{
s=1;
for(j=n[i];j>0;j--)
s=s*j;
printf("%d\n",s);
}
return 0;
}
用int接收I64d当然超限啊 用%d就行了