poj 1604 Just the Facts

 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 }

 

转载于:https://www.cnblogs.com/Bang-cansee/p/3724119.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值