C语言——n阶乘的最后非0位

题目如图
在这里插入图片描述
在这里插入图片描述
解题思路:
如果直接输出阶乘再求最后非零数,阶乘过大,会出现溢出的情况,因此在每次求阶乘的时候会把数截取掉,然后在缩放

#include <stdio.h>
#include <math.h>
int main(){
	int i,n,sum=1;
	scanf("%d",&n);
	if(n==0)
		printf("%d",sum);
	else{
		for(i=1;i<=n;i++){
			sum*=i;
			while(sum%10==0){
				sum/=10;
			}
			sum=sum%1000;
		}
		printf("%d",sum%10);	
	}
	return 0;
}
发布了7 篇原创文章 · 获赞 6 · 访问量 94

猜你喜欢

转载自blog.csdn.net/weixin_44252790/article/details/104034853