Uva 568 【大整数】

UVa568

题意:求N!(N<=10000)的最后一位非0数。

10000以内5^5 = 3125最多可以影响后5位。所以直接保存后五位就行。

 1 #include<iostream>
 2 #include<cstdio>
 3 #define MOD 100000
 4 using namespace std;
 5 const int maxn=10005;
 6 int a[maxn];
 7 
 8 int main()
 9 {
10     a[0]=1;
11     for(int i=1;i<=10000;i++)
12     {
13         a[i]=a[i-1]*i;
14         while(a[i]%10==0)
15             a[i]/=10;
16         a[i]%=MOD;
17     }
18     int n;
19     while(cin>>n){
20         printf("%5d -> %d
",n,a[n]%10);
21     }
22     return 0;
23 }
原文地址:https://www.cnblogs.com/zxhyxiao/p/7337851.html