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 }
    代码
  • 相关阅读:
    再谈spark部署搭建和企业级项目接轨的入门经验(博主推荐)
    CSS基础3——使用CSS格式化元素内容的字体
    利用MySQL 的GROUP_CONCAT函数实现聚合乘法
    POJ Octal Fractions(JAVA水过)
    组件接口(API)设计指南-文件夹
    Nginx 因 Selinux 服务导致无法远程訪问
    host字段变复杂了
    hdu 1251 统计难题 初识map
    “那个人样子好怪。”“我也看到了,他好像一条狗。”
    pomelo 协议
  • 原文地址:https://www.cnblogs.com/adelalove/p/9015245.html
Copyright © 2011-2022 走看看