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;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章