SP11 FCTRL - Factorial
SP11 FCTRL - Factorial
题目
题目链接
题意
T 组数据,每组数据输入一个 N,求 Z(N)。
Z(N)是 N 的阶乘的末尾的零的个数。
N<=1e9
思路
根据数据范围可以判定不可以暴力求解,为规律题。
打表找规律,发现
#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,但是不符合样例的输出结果。
从数学角度考虑,提出问题(什么时候才会产生 0?)
已知 10 = 2 * 5
阶乘可以表示为 1 * 2 * 3 * 4 * 5 ··· * n
2 可以用偶数来替代,数量足够多用来凑 10
则需要找到阶乘中 5 的个数,5 为质因数
已知 n / 5 可得 n 中有几个 5 组成(1-n 中是 5 的倍数的个数)
但需要考虑有两个 5 组成的数(25 = 5 * 5)
由此 题目转化为 求 n 的阶乘中 质因数 5 的个数,为答案。
坑点
- 暴力不可求解
- 需要考虑 有两个质因数 5 的情况
- 从数学角度分析问题
算法一:思维 + 数学
时间复杂度
O ( N ) O(N) O(N)
实现步骤
- 用 ans 累计质因数 5 的个数
- n / 5 求 n 中 5 的个数,与 2 匹配,成为 10,作为末尾的 0
- 累计 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相关推荐
- 172. Factorial Trailing Zeroes
/**172. Factorial Trailing Zeroes *2016-6-4 by Mingyang* 首先别忘了什么是factorial,就是阶乘.那么很容易想到需要统计* (2,5)对的 ...
- R语言使用aov函数进行双因素方差分析(Two-way factorial ANOVA)、使用HH包中的interaction2wt函数为任何阶的双因素方差分析可视化主效应和交互作用图、箱图显示主效应
R语言使用aov函数进行双因素方差分析(Two-way factorial ANOVA).使用HH包中的interaction2wt函数为任何阶的双因素方差分析可视化主效应和交互作用图(Main ef ...
- R语言使用aov函数进行双因素方差分析(Two-way factorial ANOVA)、在双因素方差分析中,受试者被分配到由两个因素交叉分类形成的组(Two-way factorial ANOVA)
R语言使用aov函数进行双因素方差分析(Two-way factorial ANOVA).在双因素方差分析中,受试者被分配到由两个因素交叉分类形成的组(Two-way factorial ANOVA) ...
- R语言使用aov函数进行双因素方差分析(Two-way factorial ANOVA)、使用interaction.plot函数在双因素方差分析中可视化交互作用(Interaction)
R语言使用aov函数进行双因素方差分析(Two-way factorial ANOVA).使用interaction.plot函数在双因素方差分析中显示(可视化)交互作用(Interaction) 目 ...
- [LeetCode/LintCode] Factorial Trailing Zeros
Problem Write an algorithm which computes the number of trailing zeros in n factorial. Challenge 11! ...
- TJU Problem 1065 Factorial
注意数据范围,十位数以上就可以考虑long long 了,断点调试也十分重要. 原题: 1065. Factorial Time Limit: 1.0 Seconds Memory Limit ...
- 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 ...
- time series 时间序列 | fractional factorial design 部分要因试验设计
作业: 1) A plot of data from a time series, which shows a cyclical pattern – please show a time series ...
- matlab2c使用c++实现matlab函数系列教程-factorial函数
全栈工程师开发手册 (作者:栾鹏) matlab2c动态链接库下载 matlab库函数大全 matlab2c基础教程 matlab2c开发全解教程 matlab2c调用方法: 1.下载动态链接库 2. ...
最新文章
- android仿知乎按钮动效,Android仿知乎客户端关注和取消关注的按钮点击特效实现思路详解...
- CodeForces - 1593G Changing Brackets(思维)
- Leetcode--1111. 有效括号的嵌套深度(Java)
- python安装gz文件_python tar.gz怎么安装-问答-阿里云开发者社区-阿里云
- 【原型设计】第二节:Axure RP9制作自己的元件库的操作教程
- 【ElasticSearch】Es 源码之 PeerRecoverySourceService 源码解读
- hashmap和hashtable,arraylist和vector的区别
- 修复 VM Player 断网问题 20121215T1402
- plc变频器c语言,PLC控制变频器的几种方法
- 00002__Proxyee-down__百度网盘下载加速软件
- Nacos+Gateway503错误,No servers available for service
- Android 给WebView设置UA
- java中所有import意思,java 程序中用到的所有类都必须使用 import 语句。
- GAN的介绍和简单代码的实现
- 路由懒加载的三种写法
- 计算机教师个人业绩成果自述,申报中学信息技术高级教师职称晋升个人业绩成果自述.docx...
- 普及下病毒性感冒和细菌性感冒的区别(如何看血常规)
- 天道酬勤-30岁的人生规划
- requests库(正则提取)爬取千图网
- 【CC2530授课笔记】(11)超声波测距的原理及实现 (采用HC-SR04模块)