首页 > 试题广场 >

阶乘末尾非零数字

[编程题]阶乘末尾非零数字
  • 热度指数:10138 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
\hspace{15pt}给定一个正整数 n,记其阶乘为:


n! = 1 \times 2 \times 3 \times \dots \times n


\hspace{15pt}请你输出 n! 的十进制表示中,从右往左数第一个非零数字的数值。

输入描述:
\hspace{15pt}在一行上输入一个整数 n\left(1 \leqq n \leqq 10^7\right)


输出描述:
\hspace{15pt}输出一个整数,代表 n! 末尾第一个非零数字。
示例1

输入

6

输出

2

说明

n=6 时,6! = 720,末尾第一个非零数字为 2
示例2

输入

10

输出

8

说明

n=10 时,10! = 3\,628\,800,末尾第一个非零数字为 8
#include <stdio.h>

int main() {
    int a;
    scanf("%d",&a);
    int i;
    long long sum=1;
    for(i=1;i<=a;i++)
    {
        sum=sum*i;
        while(1)
        {
            if(sum%10==0)
            {
                sum=sum/10;
            }
            else {
            break;
            }
        }
        if(sum>1000000)
        {
            sum=sum%1000000;
        }
    }
    if(sum>10)
    {
        printf("%llu",sum%10);
    }
    else
    {
        printf("%llu",sum);
    }
    
    return 0;
}


发表于 2025-07-09 18:22:43 回复(1)