SP11 FCTRL - Factorial

题目

题目链接

题意

T 组数据,每组数据输入一个 N,求 Z(N)。

Z(N)是 N 的阶乘的末尾的零的个数。

N<=1e9

思路

  1. 根据数据范围可以判定不可以暴力求解,为规律题。

  2. 打表找规律,发现

    #include <bits/stdc++.h>
    #define endl '\n'
    #define int long long
    using namespace std;
    const int N = 2e5 + 10;
    typedef long long ll;signed main()
    {ios::sync_with_stdio(false);cin.tie(0), cout.tie(0);int t;cin >> t;for (int i = 1; i <= t; i++){int ans = 1;for (int j = 1; j <= i; j++){ans = ans * j;}cout << ans << endl;}return 0;
    }
    1:1
    2:2
    3:6
    4:24
    5:120
    6:720
    7:5040
    8:40320
    9:362880
    10:3628800
    11:39916800
    12:479001600
    13:6227020800
    14:87178291200
    15:1307674368000
    16:20922789888000
    17:355687428096000
    18:6402373705728000
    19:121645100408832000
    20:2432902008176640000
    

    每 5 个数,末尾增加一个 0,但是不符合样例的输出结果。

  3. 从数学角度考虑,提出问题(什么时候才会产生 0?)

  4. 已知 10 = 2 * 5

  5. 阶乘可以表示为 1 * 2 * 3 * 4 * 5 ··· * n

  6. 2 可以用偶数来替代,数量足够多用来凑 10

  7. 则需要找到阶乘中 5 的个数,5 为质因数

  8. 已知 n / 5 可得 n 中有几个 5 组成(1-n 中是 5 的倍数的个数)

  9. 但需要考虑有两个 5 组成的数(25 = 5 * 5)

  10. 由此 题目转化为 求 n 的阶乘中 质因数 5 的个数,为答案。

坑点

  1. 暴力不可求解
  2. 需要考虑 有两个质因数 5 的情况
  3. 从数学角度分析问题

算法一:思维 + 数学

时间复杂度

O ( N ) O(N) O(N)

实现步骤

  1. 用 ans 累计质因数 5 的个数
  2. n / 5 求 n 中 5 的个数,与 2 匹配,成为 10,作为末尾的 0
  3. 累计 n / 5 的结果继续 / 5,因为其结果仍然包含质因数 5

代码

#include <bits/stdc++.h>
#define endl '\n'
#define int long long
using namespace std;
const int N = 2e5 + 10;
typedef long long ll;signed main()
{ios::sync_with_stdio(false);cin.tie(0), cout.tie(0);int t;cin >> t;while (t--){int n;cin >> n;int ans = 0;while (1){ans += n / 5;n = n / 5;if (n < 5){break;}}cout << ans << endl;}return 0;
}

总结

数学思维好题,需要分析阶乘中末尾零由什么产生。

SP11 FCTRL - Factorial相关推荐

  1. 172. Factorial Trailing Zeroes

    /**172. Factorial Trailing Zeroes *2016-6-4 by Mingyang* 首先别忘了什么是factorial,就是阶乘.那么很容易想到需要统计* (2,5)对的 ...

  2. R语言使用aov函数进行双因素方差分析(Two-way factorial ANOVA)、使用HH包中的interaction2wt函数为任何阶的双因素方差分析可视化主效应和交互作用图、箱图显示主效应

    R语言使用aov函数进行双因素方差分析(Two-way factorial ANOVA).使用HH包中的interaction2wt函数为任何阶的双因素方差分析可视化主效应和交互作用图(Main ef ...

  3. R语言使用aov函数进行双因素方差分析(Two-way factorial ANOVA)、在双因素方差分析中,受试者被分配到由两个因素交叉分类形成的组(Two-way factorial ANOVA)

    R语言使用aov函数进行双因素方差分析(Two-way factorial ANOVA).在双因素方差分析中,受试者被分配到由两个因素交叉分类形成的组(Two-way factorial ANOVA) ...

  4. R语言使用aov函数进行双因素方差分析(Two-way factorial ANOVA)、使用interaction.plot函数在双因素方差分析中可视化交互作用(Interaction)

    R语言使用aov函数进行双因素方差分析(Two-way factorial ANOVA).使用interaction.plot函数在双因素方差分析中显示(可视化)交互作用(Interaction) 目 ...

  5. [LeetCode/LintCode] Factorial Trailing Zeros

    Problem Write an algorithm which computes the number of trailing zeros in n factorial. Challenge 11! ...

  6. TJU Problem 1065 Factorial

    注意数据范围,十位数以上就可以考虑long long 了,断点调试也十分重要. 原题: 1065.   Factorial Time Limit: 1.0 Seconds   Memory Limit ...

  7. zoj 3621 Factorial Problem in Base K 数论 s!后的0个数

    Factorial Problem in Base K Time Limit: 20 Sec  Memory Limit: 256 MB 题目连接 http://acm.zju.edu.cn/onli ...

  8. time series 时间序列 | fractional factorial design 部分要因试验设计

    作业: 1) A plot of data from a time series, which shows a cyclical pattern – please show a time series ...

  9. matlab2c使用c++实现matlab函数系列教程-factorial函数

    全栈工程师开发手册 (作者:栾鹏) matlab2c动态链接库下载 matlab库函数大全 matlab2c基础教程 matlab2c开发全解教程 matlab2c调用方法: 1.下载动态链接库 2. ...

最新文章

  1. android仿知乎按钮动效,Android仿知乎客户端关注和取消关注的按钮点击特效实现思路详解...
  2. CodeForces - 1593G Changing Brackets(思维)
  3. Leetcode--1111. 有效括号的嵌套深度(Java)
  4. python安装gz文件_python tar.gz怎么安装-问答-阿里云开发者社区-阿里云
  5. 【原型设计】第二节:Axure RP9制作自己的元件库的操作教程
  6. 【ElasticSearch】Es 源码之 PeerRecoverySourceService 源码解读
  7. hashmap和hashtable,arraylist和vector的区别
  8. 修复 VM Player 断网问题 20121215T1402
  9. plc变频器c语言,PLC控制变频器的几种方法
  10. 00002__Proxyee-down__百度网盘下载加速软件
  11. Nacos+Gateway503错误,No servers available for service
  12. Android 给WebView设置UA
  13. java中所有import意思,java 程序中用到的所有类都必须使用 import 语句。
  14. GAN的介绍和简单代码的实现
  15. 路由懒加载的三种写法
  16. 计算机教师个人业绩成果自述,申报中学信息技术高级教师职称晋升个人业绩成果自述.docx...
  17. 普及下病毒性感冒和细菌性感冒的区别(如何看血常规)
  18. 天道酬勤-30岁的人生规划
  19. requests库(正则提取)爬取千图网
  20. 【CC2530授课笔记】(11)超声波测距的原理及实现 (采用HC-SR04模块)

热门文章

  1. 制造业MES生产管理系统程序代码 MES源码
  2. linux 下 的tail 命令
  3. BT3amp;spoonwep无线破解与Q3amp;spoonwep无线破解哪个容易
  4. bootStrap输入框鼠标指针样式设定
  5. 第一节 模式识别的基本概念
  6. truetype字体怎么转换成普通字体_将truetype字体默认转换为NV路径中的像素大小
  7. Glove论文详解及代码分析
  8. C#使用mouse_event函数模拟鼠标事件
  9. 英语读书笔记-Book Lovers Day 06
  10. Dijkstra算法、Floyd算法的区别与联系,并由此谈到greedy和DP