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",n,a[n]%10);
21     }
22     return 0;
23 }

 

posted @ 2017-08-10 10:25  ╰追憶似水年華ぃ╮  阅读(239)  评论(0)    收藏  举报