【题解】p2388阶乘之乘】的更多相关文章

P2388 阶乘之乘 题目背景 不告诉你…… 题目描述 求出1!*2!*3!*4!*……*n!的末尾有几个零 输入输出格式 输入格式: n(n<=10^8) 输出格式: 有几个零 输入输出样例 输入样例#1: 复制 10 输出样例#1: 复制 7 乘数后面的零的个数只与这个数质因数分解以后2的个数和5的个数有关,0的个数等于min(sum2,sum5) #include<cstdio> #include<cstring> #include<iostream> #i…
首先感谢wxy学长之前告诉我这道题,结果今天竟然一眼切了,咕咕咕 题目链接: P2388 阶乘之乘 题目思路: 第一眼看到一定想到的是先求一下阶乘然后看最后又几个零,但是这样会TIL啊 想一下0是怎么出现的-->\(10=2 \times 5\) 每一个0都是由因子2和5相乘得出的,只需统计出5的倍数即可 为什么是5而不是2呢? 因为5的倍数比2要少很多很多 代码: #include<iostream> #include<cstdio> #define int long lo…
本蒟蒻又来发题解了QwQ; 看到这个题目,本蒟蒻第一眼就想写打个暴力: 嗯,坏习惯: 但是,动动脑子想一想就知道,普通的的暴力是过不了的: 但是,身为蒟蒻的我,也想不出什么高级的数学方法来优化: 好,回到正题 题目是要求我们求出这个累乘末尾的'0' '0'是个特别特殊的数字,因为是累乘,那么一个'0'肯定是由一个'2'和一个'5'相乘得来的: 而且'0'的个数肯定是'2'和'5'之间数目较少的那一个的个数: 而我们又是求它的阶乘的累乘, 所以'5'的个数一定要小于'2'的个数 那么'0'的个数就…
原题传送门 题解一堆\(O(n)\)算法真给我看傻了. 考虑\(10=2*5\),因子2肯定更多,所以计算因子5的个数即可. 从5到n这\(n-5+1\)个数的阶乘里面,都各自含有一个因子\(5=1*5\). 从10到n这\(n-10+1\)个数的阶乘里面,都各自含有一个因子\(10=2*5\). 故因子5的总个数为\((n-5+1)+(n-10+1)+...+(n \% 5+1)\). 不难发现这是一个等差数列,首尾项如上,项数为\(n/5\). 然而这样并不对,因为我们只考虑到了含有一个因子…
目录 简要题意 题解 主要思路 一个 \(\omega(n)\) 的算法 一个 \(O(\log n)\) 的算法 一个算法 代码 算法 \(1\)(\(\omega(n)\)) 算法 \(2\) 算法 \(3\) 简要题意 求 \(1!\times 2!\times \cdots\times n!\) 的末尾有几个 \(0\) . \(n\le 10^8\) 题解 主要思路 首先,一个数末尾有几个零等价于它有多少个因子 \(10\) . 即这个数有多少个因子 \(2\) 和 \(5\),又因为…
题目背景 不告诉你-- 题目描述 求出1!*2!*3!*4!*--*n!的末尾有几个零 输入输出格式 输入格式: n(n<=10^8) 输出格式: 有几个零 输入输出样例 输入样例#1: 复制 10 输出样例#1: 复制 7 首先末尾有0肯定就是乘10,10可以分解为2和5,显然2的数目多于5,于是就是统计5的数目 然后可以转化一下, 对于 11 21 2 31 2 3 41 2 3 4 51 2 3 4 5 6--1 2 3 4 5 6 -- x 我们来除一下5,发现能被5整除的项变成了: 1…
分析 求因数5的个数 AC代码 #include<iostream> using namespace std; int main() { long long n,t,ans=0,s=0; cin>>n; for(int i=1;i<=n;i++) { t=i; while(t%5==0) s++,t/=5; ans+=s; } cout<<ans<<endl; return 0; }…
原题传送门 题目描述 也许你早就知道阶乘的含义,N阶乘是由1到N相乘而产生,如: 12!=1×2×3×4×5×6×7×8×9×10×11×12=479,001,600 12的阶乘最右边的非零位为6. 写一个程序,计算N(1≤N≤50,000,000)阶乘的最右边的非零位的值. 注意:10,000,000!有24999992499999个零. 输入格式 仅一行包含一个正整数N. 输出格式 一个整数,表示最右边的非零位的值. 输入输出样例 输入 #1 12 输出 #1 6 说明/提示 USACO T…
7.20试机测  T3 阶乘之和 暴力AC题解 题外话:此乃本蒟蒻发表的第一篇题解,大家多多关照,支持一下,谢谢 题面 3.阶乘之和(sum.pas/in/out) 问题描述: 给定一个非负整数 n,请你判断 n 是否可以由一些非负整数的阶乘相加得到. 问题输入: 有若干组数据.每行一个整数 n,保证 n<1000000. 以负数结束输入. 问题输出: 对于每组数据输出一行,若可以则输出‘YES’,否则输出‘NO’. 输入样例: 9 -1 样例输出: YES 分析 这个题嘛 大概了解了一下题意,…
题目地址:https://pintia.cn/problem-sets/14/problems/742 前言 咱目前还只能说是个小白,写题解是为了后面自己能够回顾.如果有哪些写错的/能优化的地方,也请各位多指教.( •̀ ω •́ ) 题目描述 本题要求实现一个打印非负整数阶乘的函数,要求能处理一定大数值的阶乘. 展开查看详情 函数接口定义 void Print_Factorial ( const int N ); 其中N是用户传入的参数,其值不超过1000.如果N是非负整数,则该函数必须在一行…