zoukankan      html  css  js  c++  java
  • 阶乘之乘

    题目背景
    不告诉你……
    题目描述
    求出1!*2!*3!*4!*……*n!的末尾有几个零
    输入输出格式
    输入格式:
    n(n<=10^8)
    输出格式:
    有几个零
    输入输出
    输入样例#110
    输出样例#17
    题面

    我的做法:

    将1-n 的阶乘 对2和5进行质因数分解

    假设有A个5,B个2

    那么最终答案为min(A,B)

    原理:2*5=10

    得分:80

     1 #include<algorithm>
     2 #include<iostream>
     3 #include<cstring>
     4 #include<string>
     5 #include<cstdio>
     6 #include<cmath> 
     7 #define ll long long
     8 #define DB double
     9 using namespace std;
    10 inline int read()
    11 {
    12     int x=0,w=1;char ch=getchar();
    13     while(!isdigit(ch)){if(ch=='-') w=-1;ch=getchar();}
    14     while(isdigit(ch)) x=(x<<3)+(x<<1)+ch-'0',ch=getchar();
    15     return x*w;
    16 }
    17 int n,tmp;
    18 int A,B;
    19 int main()
    20 {
    21     n=read();
    22     for(int i=1;i<=n;++i)
    23     {
    24         tmp=i;while(tmp/5) A+=tmp/5,tmp/=5;
    25         tmp=i;while(tmp/2) B+=tmp/2,tmp/=2;
    26     }
    27     printf("%d",min(A,B));
    28     return 0;
    29 }
    代码

    优化:

    由分析可知,A一定小于等于B

    所以直接统计A就可以了

    所以在统计的时候i+=5 

    eg, 5!与6!,7!,8!,9!中5的个数是一样的

    注意一下边界

    还要开long long

     1 #include<algorithm>
     2 #include<iostream>
     3 #include<cstring>
     4 #include<string>
     5 #include<cstdio>
     6 #include<cmath> 
     7 #define ll long long
     8 #define DB double
     9 using namespace std;
    10 inline ll read()
    11 {
    12     ll x=0,w=1;char ch=getchar();
    13     while(!isdigit(ch)){if(ch=='-') w=-1;ch=getchar();}
    14     while(isdigit(ch)) x=(x<<3)+(x<<1)+ch-'0',ch=getchar();
    15     return x*w;
    16 }
    17 ll n,tmp,A,i,k,fg;
    18 int main()
    19 {
    20     n=read();
    21     for(i=0;i<=n;i+=5)
    22     {
    23         tmp=i;k=0;
    24         while(tmp/5) k+=tmp/5,tmp/=5;
    25         A+=min(n-i+1,(ll)5)*k;
    26     }
    27     printf("%lld",A);
    28     return 0;
    29 }
    代码
  • 相关阅读:
    系统吞吐量、TPS(QPS)、用户并发量、性能測试概念和公式
    限流实现与解决方案
    mysql事务,select for update,及数据的一致性处理
    **MySQL锁机制与用法分析**
    死锁的排查
    系统中异常的设计与处理
    Spring如何处理线程并发问题
    ThreadLocal作用、场景、原理
    Database Administration Statements
    mybatis 无法自动补全,没有获得dtd文件
  • 原文地址:https://www.cnblogs.com/adelalove/p/9015245.html
Copyright © 2011-2022 走看看