阶乘(大数乘法模拟做法)

阶乘

题目描述
N的阶乘写作N!表示小于等于N的所有正整数的乘积。阶乘会很快的变大,如13!就必须用32位整数类型来存储,70!即使用浮点数也存不下了。你的任务是找到阶乘最后面的非零位。举个例子,5!=12345=120所以5!的最后面的非零位是2,7!=1234567=5040,所以最后面的非零位是4。

输入
共一行,一个整数不大于4,220的整数N。

输出
共一行,输出N!最后面的非零位。

样例输入
7

样例输出
4

简单粗暴的大数乘法

#include<stdio.h>
int a[100000];
int main()
{
    
    
    int i,j,k,s,l=0,n;
    scanf("%d",&n);
    a[0]=1;
    //计算出前n个数的和,简单暴力。
    for(i=1;i<=n;i++)
    {
    
    
        int x=0,y=0;
        for(j=0;j<10000;j++)
        {
    
    
            x=a[j]*i+y;
            y=x/10;
            a[j]=x%10;
        }
    }
    for(i=0;;i++)//循环遍历第一个不为0的数就是计算出来的末尾不为0的第一个数!
    {
    
    
        if(a[i]!=0)
        {
    
    
            printf("%d\n",a[i]);
            break;
        }
    }
}

猜你喜欢

转载自blog.csdn.net/m0_46381590/article/details/111419800