1. 程式人生 > >ALGO-83演算法訓練 階乘

ALGO-83演算法訓練 階乘

演算法訓練 階乘  

時間限制:1.0s   記憶體限制:512.0MB

    

問題描述
  一個整數n的階乘可以寫成n!,它表示從1到n這n個整數的乘積。階乘的增長速度非常快,例如,13!就已經比較大了,已經無法存放在一個整型變數中;而35!就更大了,它已經無法存放在一個浮點型變數中。因此,當n比較大時,去計算n!是非常困難的。幸運的是,在本題中,我們的任務不是去計算n!,而是去計算n!最右邊的那個非0的數字是多少。例如,5! = 1*2*3*4*5 = 120,因此5!最右邊的那個非0的數字是2。再如:7! = 5040,因此7!最右邊的那個非0的數字是4。請編寫一個程式,輸入一個整數n(n<=100),然後輸出n! 最右邊的那個非0的數字是多少。
  輸入格式:輸入只有一個整數n。
  輸出格式:輸出只有一個整數,即n! 最右邊的那個非0的數字。
輸入輸出樣例

樣例輸入

6

樣例輸出

2

#include <iostream>
using namespace std;

int main(int argc, char** argv) {
	int n;
	cin>>n;
	long long res=n,mod=1e10;
	while(--n){
		res=res*n%mod;
		while(res%10==0)
			res/=10;
	}
	cout<<res%10<<endl;
	return 0;
}