我试图解决有关codechef的问题。问题如下:
我必须找到数n的阶乘(1 <= n <= 100)。具体问题是here。
我写了以下代码来解决它。
#include<stdio.h>
int main() {
int ar[160],m,temp,temp1,t,x,i,j;
scanf("%d",&t);
int n[t];
for(i=0;i<t;i++)
scanf("%d",&n[i]);
for(j=0;j<t;j++)
{
temp1=n[j];
if(n[j]==100)
{
ar[0]=0;
ar[1]=0;
ar[2]=1;
m=3;
}
else if(n[j]<100&&n[j]>=10)
{
ar[0]=temp1%10;
ar[1]=temp/10;
m=2;
}
else if(n[j]<10)
{
ar[0]=temp1%10;
m=1;
}
n[j]=n[j]-1;
while(n[j]>=1)
{
temp=0;
for(i=0;i<m;i++)
{
x=ar[i]*n[j]+temp;
ar[i]=x%10;
temp=x/10;
}
while(temp>0)
{
m=m+1;
ar[m-1]=temp%10;
temp=temp/10;
}
n[j]=n[j]-1;
}
for(i=m-1;i>=0;i--)
printf("%d",ar[i]);
printf("\n");
}
return 0;
}
但我对评估的答案是错误的。但是我的代码在Ideone.com和我的机器上的gcc上正常运行。经过多次代码后,我无法确定我的错误?如果你们能指出任何错误,我将非常感激。
答案 0 :(得分:0)
我跑了这个:
gcc -o a a.c
echo 100 $(seq 1 100) | ./a
n = 10的情况明显被破坏(它产生输出00),但许多其他线看起来还不错。
快速查看在n = 10时解析输入的代码,显示出错字:&#34; temp&#34;应该是&#34; temp1&#34;。