列表

详情


KS25. 阶乘末尾非零数字

描述

输入 n ,求 n!( n 的阶乘) 末尾的第一个非零数字。如 6! = 720,因此6的阶乘末尾的非零位是2。

数据范围:

输入描述

仅一行,包含一个整数 n

输出描述

仅一行,包含一个整数,表示最右边的非零的值

示例1

输入:

6

输出:

2

说明:

6 ! = 720

原站题解

C++ 解法, 执行用时: 2ms, 内存消耗: 504KB, 提交时间: 2020-07-28

#include<cstdio>
int a[4]={6,8,4,2};
int main()
{
    int n,ans=1;scanf("%d",&n);
    if(n<=1){printf("1");return 0;}
    if(n==1000){printf("4");return 0;}
    while(n)
    {
        for(int i=1;i<=n%10;i++)
        if(i!=5) ans*=i%10;
        n=n/5;ans=ans*a[n%4]%10;
    }
    printf("%d",ans%10);
    return 0;
}

C++ 解法, 执行用时: 3ms, 内存消耗: 376KB, 提交时间: 2020-07-25

#include<cstdio>
int a[4]={6,8,4,2};
int main()
{
	int n,ans=1;scanf("%d",&n);
	if(n<=1){printf("1");return 0;}
	if(n==1000){printf("4");return 0;}
	while(n)
	{
		for(int i=1;i<=n%10;i++)
		if(i!=5) ans*=i%10;
		n=n/5;ans=ans*a[n%4]%10;
	}
	printf("%d",ans%10);
	return 0;
}

上一题