1 条题解

  • -1
    @ 2024-10-24 23:11:21
    #include<stdio.h>
    
    int main()
    
    {
    
        int n;
        int num[100000];
        int i,j;
        scanf("%d",&n);
        int l;
        l=1;
        num[1]=1; //这里初始化为1,不然后面乘都等于0,我们这里以1为下标开始,因为符合我们正常的阅读
        for(i=1;i<=n;i++)
        {
         for(int j=1;j<=l;j++)
         {
          num[j]*=i; //这里其实就是上面说的每一位乘i
         }
            for(j=1;j<=l;j++)
            {
                num[j+1]+=num[j]/10;//这里其实就是进位表示的方法
                num[j]%=10;
            }
            if(num[j]>0){ //这里其实就是判断位数的代码,方便在下面输出找到下标位置
                while(num[j]>10)
                {
                    num[j+1]+=num[j]/10;
                    num[j]%=10;
                    j++;
                }
                l=j;
            }
        }
        for(i=l;i>=1;i--){  //注意这里是逆向输出,比如120,则他的0是第一位,2是第二位,1是第三位
            printf("%d",num[i]);
    }
        return 0;
    
     }
    
    
    

    信息

    ID
    496
    时间
    1000ms
    内存
    256MiB
    难度
    5
    标签
    递交数
    64
    已通过
    25
    上传者