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