洛谷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…
本蒟蒻又来发题解了QwQ; 看到这个题目,本蒟蒻第一眼就想写打个暴力: 嗯,坏习惯: 但是,动动脑子想一想就知道,普通的的暴力是过不了的: 但是,身为蒟蒻的我,也想不出什么高级的数学方法来优化: 好,回到正题 题目是要求我们求出这个累乘末尾的'0' '0'是个特别特殊的数字,因为是累乘,那么一个'0'肯定是由一个'2'和一个'5'相乘得来的: 而且'0'的个数肯定是'2'和'5'之间数目较少的那一个的个数: 而我们又是求它的阶乘的累乘, 所以'5'的个数一定要小于'2'的个数 那么'0'的个数就…
题目背景 不告诉你-- 题目描述 求出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; }…
目录 简要题意 题解 主要思路 一个 \(\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\),又因为…
想看原题请点击这里:传送门 看一下原题: 题目描述 用高精度计算出S=!+!+!+…+n! (n≤) 其中“!”表示阶乘,例如:!=****××××. 输入格式 一个正整数N. 输出格式 一个正整数S,表示计算结果. 输入输出样例 输入 输出 如果这道题不需要用高精度的话那就变得很简单了,但由于我们看到了洛谷贴上了“高精度”的标签但由于这道题目是求阶乘和所以越往后n的阶乘就会越大. 又因为n!=n*(n-1!,所以有转移方程n!=n*(n-1)!避免重复运算(ROS只是唠叨一句防止有些人不知道忘…
题目背景 N的阶乘写作N!,表示小于等于N的所有正整数的乘积. 题目描述 阶乘会变大得很快,如13!就必须用32位整数类型来存储,到了70!即使用浮点数也存不下了. 你的任务是找到阶乘最前面的非零位.举个例子: 5!=1*2*3*4*5=120,所以5!的最靠前的非零位是1. 7!=1*2*3*4*5*6*7=5040,所以最靠前的非零位是5. 输入输出格式 输入格式: 共一行,一个不大于4,220的正整数N 输出格式: 共一行,输出N!最靠后的非零位. 输入输出样例 输入样例#1: 7 输出样…
题目描述 也许你早就知道阶乘的含义,N阶乘是由1到N相乘而产生,如: 12! = 1 x 2 x 3 x 4 x 5 x 6 x 7 x 8 x 9 x 10 x 11 x 12 = 479,001,600 12的阶乘最右边的非零位为6. 写一个程序,计算N(1<=N<=50,000,000)阶乘的最右边的非零位的值. 注意:10,000,000!有2499999个零. 输入输出格式 输入格式: 仅一行包含一个正整数N. 输出格式: 单独一行包含一个整数表示最右边的非零位的值. 输入输出样例…
题目背景 N的阶乘写作N!,表示小于等于N的所有正整数的乘积. 题目描述 阶乘会变大得很快,如13!就必须用32位整数类型来存储,到了70!即使用浮点数也存不下了. 你的任务是找到阶乘最前面的非零位.举个例子: 5!=1*2*3*4*5=120,所以5!的最靠前的非零位是1. 7!=1*2*3*4*5*6*7=5040,所以最靠前的非零位是5. 输入输出格式 输入格式: 共一行,一个不大于4,220的正整数N 输出格式: 共一行,输出N!最靠后的非零位. 输入输出样例 输入样例#1: 7 输出样…
题目描述 也许你早就知道阶乘的含义,N阶乘是由1到N相乘而产生,如: 12! = 1 x 2 x 3 x 4 x 5 x 6 x 7 x 8 x 9 x 10 x 11 x 12 = 479,001,600 12的阶乘最右边的非零位为6. 写一个程序,计算N(1<=N<=50,000,000)阶乘的最右边的非零位的值. 注意:10,000,000!有2499999个零. 输入输出格式 输入格式: 仅一行包含一个正整数N. 输出格式: 单独一行包含一个整数表示最右边的非零位的值. 输入输出样例…