1 /**
2 大意: 求n! 结果 从左到右 第一个非零数
3 跟 1150 差不多。。
4 **/
5 #include <iostream>
6 #include <cstdio>
7 using namespace std;
8
9 int s[][4]={
10 {6,2,4,8},{1,3,9,7},{1,7,9,3},{1,9,1,9}
11 };
12 int get2(int n){
13 if(n==0)
14 return 0;
15 return n/2+get2(n/2);
16 }
17
18 int get5(int n){
19 if(n==0)
20 return 0;
21 return n/5+get5(n/5);
22 }
23
24 int get(int n,int x){
25 if(n==0)
26 return 0;
27 return n/10+(n%10>=x)+get(n/5,x);
28 }
29
30 int getx(int n,int x){
31 if(n==0)
32 return 0;
33 int res =0;
34 res = getx(n/2,x)+get(n,x);
35 return res;
36 }
37
38 int main()
39 {
40 int n;
41 while(cin>>n){
42 int num2 = get2(n);
43 int num5 = get5(n);
44 int num3 = getx(n,3);
45 int num7 = getx(n,7);
46 int num9 = getx(n,9);
47 if(num2<num5){
48 printf("%5d -> %d\n",n,5);
49 continue;
50 }else{
51 int res =1;
52 if(num2!=num5){
53 num2 = num2-num5;
54 res = res*s[0][num2%4];
55 res = res%10;
56 }
57 res *= s[1][num3%4];
58 res %=10;
59 res *= s[2][num7%4];
60 res %=10;
61 res *= s[3][num9%4];
62 res = res%10;
63 printf("%5d -> %d\n",n,res);
64 }
65 }
66 return 0;
67 }