51nod 1003 阶乘后面0的数量】的更多相关文章

1003 阶乘后面0的数量 基准时间限制:1 秒 空间限制:131072 KB 分值: 5         难度:1级算法题 n的阶乘后面有多少个0? 6的阶乘 = 1*2*3*4*5*6 = 720,720后面有1个0.   Input 一个数N(1 <= N <= 10^9) Output 输出0的数量 Input示例 5 Output示例 1题目链接:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1003编程之…
题意:n的阶乘后面0的个数,如果直接算出阶乘再数0的数量一定会超时的. 因为10=2*5,所以求出5贡献的次数就行. #include "bits/stdc++.h" using namespace std; #define LL long long #define INF 0x3f3f3f3f3f #define PI acos(-1) #define N 510 LL arr[N]; int main() { int n,k; while(~scanf("%d"…
链接:http://poj.org/problem?id=1401 题意:计算N!的末尾0的个数 思路:算数基本定理 有0,分解为2*5,寻找2*5的对数,2的因子个数大于5,转化为寻找因子5的个数.又有算数基本定理: n!在素数因子分解中p的幂为[n/p]+[n/p2]+[n/p3]+... 同时最大次数不会超过logpn.通过换底公式,有ln(n)/ln(p) 代码:(51Nod去掉t循环即可) #include <iostream> #include <math.h> usi…
每一个 2 与一个 5 相乘,结果就增加一个零. 所以求 n! 后面的连续零的个数,其实就是求其中相乘的数含有因子每对因子 2 与 5  的个数. 又因为从1到某个数,所含 2 的个数比 5 多,所以问题就可以进一步简化到求含有因子5的个数. 然后自己没写出来,没骨气的又看了别人的代码..GG啊 #include <bits/stdc++.h> using namespace std; typedef long long ll; int main () { int n; scanf("…
1003 阶乘后面0的数量  基准时间限制:1 秒 空间限制:131072 KB 分值: 5 难度:1级算法题  收藏  关注 n的阶乘后面有多少个0? 6的阶乘 = 1*2*3*4*5*6 = 720,720后面有1个0. Input 一个数N(1 <= N <= 10^9) Output 输出0的数量 Input示例 5 Output示例 1 李陶冶 (题目提供者) C++的运行时限为:1000 ms ,空间限制为:131072 KB 示例及语言说明请按这里 思路:利用公式sum=n/5+…
1001 数组中和等于K的数对 基准时间限制:1 秒 空间限制:131072 KB 分值: 5 难度:1级算法题 给出一个整数K和一个无序数组A,A的元素为N个互不相同的整数,找出数组A中所有和等于K的数对.例如K = 8,数组A:{-1,6,5,3,4,2,9,0,8},所有和等于8的数对包括(-1,9),(0,8),(2,6),(3,5).   Input 第1行:用空格隔开的2个数,K N,N为A数组的长度.(2 <= N <= 50000,-10^9 <= K <= 10^…
1003 阶乘后面0的数量  基准时间限制:1 秒 空间限制:131072 KB 分值: 5 难度:1级算法题  收藏  关注 n的阶乘后面有多少个0? 6的阶乘 = 1*2*3*4*5*6 = 720,720后面有1个0. Input 一个数N(1 <= N <= 10^9) Output 输出0的数量 Input示例 5 Output示例 1 #include<bits/stdc++.h> typedef long long ll; using namespace std; i…
n的阶乘后面有多少个0? 6的阶乘 = 1*2*3*4*5*6 = 720,720后面有1个0. 收起   输入 一个数N(1 <= N <= 10^9) 输出 输出0的数量 输入样例 5 输出样例 1 ------------------------------------------------------------------------------------可以统计2的个数和的个数.编程之美有讲:一个数 n 的阶乘末尾有多少个 0 取决于从 1 到 n 的各个数的因子中 2 和 5…
题意: n的阶乘后面有多少个0? 6的阶乘 = 1*2*3*4*5*6 = 720,720后面有1个0.   Input 一个数N(1 <= N <= 10^9) OutPut 输出0的数量 思路: 一个0只能由2*5得到.统计N!中2的个数和5的个数,取少的.即求N!中5的个数.[数论:[N/5]+[N/5^2]+[N/5^3]+[N/5^4]+....]{也自己分析也可以得出此结论} 代码: int main(){ int n; cin >> n; ll ans=0; ll t…
1003 阶乘后面0的数量 基准时间限制:1 秒 空间限制:131072 KB 分值: 5 难度:1级算法题 n的阶乘后面有多少个0? 6的阶乘 = 1*2*3*4*5*6 = 720,720后面有1个0. Input 一个数N(1 <= N <= 10^9) Output 输出0的数量 Input示 5 Output示例 1 比较有意思的一个题 #include<cstdio> using namespace std; ); int main() { scanf("%d…
点击打开链接 阶乘的0 时间限制:3000 ms  |  内存限制:65535 KB 难度:3 描述 计算n!的十进制表示最后有多少个0 输入 第一行输入一个整数N表示测试数据的组数(1<=N<=100) 每组测试数据占一行,都只有一个整数M(0<=M<=10000000) 输出 输出M的阶乘的十进制表示中最后0的个数 比如5!=120则最后的0的个数为1 样例输入 6 3 60 100 1024 23456 8735373 样例输出 0 14 24 253 5861 218383…
题意: 给出两个数字a和b,求a的阶乘转换成b进制后,输出 (1)后缀中有多少个连续的0? (2)数a的b进制表示法中有多少位? 思路:逐个问题解决. 设a!=k.  k暂时不用直接转成b进制. (1)阶乘后缀0问题.先看这个十进制后缀0的例子:http://www.cnblogs.com/xcw0754/p/4604473.html 解法差不多,稍变化. 首先将b分解成若干质数(比如8={2*2*2})保存在一个集合A中(注意自然数的质数分解是唯一的),只要有一个序列A就能构成一个0,因为满b…
阶乘的0 时间限制:3000 ms  |  内存限制:65535 KB 难度:3   描述 计算n!的十进制表示最后有多少个0   输入 第一行输入一个整数N表示测试数据的组数(1<=N<=100)每组测试数据占一行,都只有一个整数M(0<=M<=10000000) 输出 输出M的阶乘的十进制表示中最后0的个数比如5!=120则最后的0的个数为1 样例输入 6 3 60 100 1024 23456 8735373 样例输出 0 14 24 253 5861 2183837 令f(…
求阶乘末尾0的个数 (1)给定一个整数N,那么N的阶乘N!末尾有多少个0?比如:N=10,N!=3628800,N!的末尾有2个0. (2)求N!的二进制表示中最低位为1的位置. 第一题 考虑哪些数相乘能得到10,N!= K * 10M其中K不能被10整除,则N!末尾有M个0. 对N!进行质因数分解: N!=2X*3Y*5Z…,因为10=2*5,所以M与2和5的个数即X.Z有关.每一对2和5都可以得到10,故M=min(X,Z).因为能被2整除的数出现的频率要比能被5整除的数出现的频率高,所以M…
题意:求区间内二进制中0的数量要不能少于1的数量 分析:很明显的是数位DP: 菜鸟me : 整体上是和数位dp模板差不多的 , 需要注意的是这里有前导零的影响 , 所以需要在dfs()里面增加zor 变量的限制条件 , 那么我们的dp[i][j] 是表示第i 位置 , ,0的数量减去1的数量不少于 j 的方案数 , 那剩下的就简单了咯 ,哦还需要注意的是 这里的 j 会出现负数的情况 , 那也很好解决咯 ,偏移下就好拉 , 从32开始 ,也就是说32表示0 #include<stdio.h>…
阶乘的0 时间限制:3000 ms  |  内存限制:65535 KB 难度:3 描写叙述 计算n!的十进制表示最后有多少个0 输入 第一行输入一个整数N表示測试数据的组数(1<=N<=100) 每组測试数据占一行.都仅仅有一个整数M(0<=M<=10000000) 输出 输出M的阶乘的十进制表示中最后0的个数 比方5!=120则最后的0的个数为1 例子输入 6 3 60 100 1024 23456 8735373 例子输出 0 14 24 253 5861 2183837 解题…
Given an integer n, return the number of trailing zeroes in n!. Note: Your solution should be in logarithmic time complexity. 题目标签:Math 题目要求我们找到末尾0的数量. 只有当有10的存在,才会有0,比如 2 * 5 = 10; 4 * 5 = 20; 5 * 6 = 30; 5 * 8 = 40 等等,可以发现0 和 5 的联系. 所以这一题也是在问 n 里有多…
二维平面上N个点之间共有C(n,2)条连线.求这C(n,2)条线中斜率小于0的线的数量. 二维平面上的一个点,根据对应的X Y坐标可以表示为(X,Y).例如:(2,3) (3,4) (1,5) (4,6),其中(1,5)同(2,3)(3,4)的连线斜率 < 0,因此斜率小于0的连线数量为2.   Input第1行:1个数N,N为点的数量(0 <= N <= 50000) 第2 - N + 1行:N个点的坐标,坐标为整数.(0 <= Xii , Yii <= 10^9)Outp…
为什么网上没有篇详细的题解[雾 可能各位聚聚觉得这道题太简单了吧 /kk 题意 首先题目是求满足条件的序列个数,条件为:出现次数最多的数仅有一个 分析 感谢 刚睡醒的 JZ姐姐在咱写题解忽然陷入自闭的时候为咱知道迷津 QwQ 那么套路来说第一想到的其实就是容斥辣 然后懒得想去网上黈力[雾 在然后,发现网上要么没推导公式(虽说是直接列不用化简的)要么就是推导公式是错的... 于是坐下来冷静分析:首先,我们考虑最高的出现次数为 x 的情况下,有多少个序列是满足条件的 容斥一发发现式子长这个样子(用到…
链接:http://www.51nod.com/Challenge/Problem.html#!#problemId=1165 直角三角形,三条边的长度都是整数.给出周长N,求符合条件的三角形数量. 例如:N = 120,共有3种不同的满足条件的直角3角行.分别是:{20,48,52}, {24,45,51}, {30,40,50}. 输入: 第1行:一个数T,表示后面用作输入测试的数的数量.(1 <= T <= 50000) 第2 - T + 1行:每行1个数N(12 <= N <…
题目 Given an integer n, return the number of trailing zeroes in n!. Note: Your solution should be in logarithmic time complexity. 分析 Note中提示让用对数的时间复杂度求解,那么如果粗暴的算出N的阶乘然后看末尾0的个数是不可能的. 所以仔细分析,N! = 1 * 2 * 3 * ... * N 而末尾0的个数只与这些乘数中5和2的个数有关,因为每出现一对5和2就会产生…
问题一解法:     我们知道求N的阶乘结果末尾0的个数也就是说我们在从1做到N的乘法的时候里面产生了多少个10, 我们可以这样分解,也就是将从0到N的数分解成因式,再将这些因式相乘,那么里面有多少个10呢? 其实我们只要算里面有多少个5就可以了?     因为在这些分解后的因子中,能产生10的可只有5和2相乘了,由于2的个数是大于5的个数的,因此 我们只要算5的个数就可以了.那么这个题目就是算这些从1到N的数字分解成因子后,这些因子里面 5的个数.   Python代码 def factori…
1165 整边直角三角形的数量 直角三角形,三条边的长度都是整数.给出周长N,求符合条件的三角形数量. 例如:N = 120,共有3种不同的满足条件的直角3角行.分别是:{20,48,52}, {24,45,51}, {30,40,50}.   Input 第1行:一个数T,表示后面用作输入测试的数的数量.(1 <= T <= 50000) 第2 - T + 1行:每行1个数N(12 <= N <= 10^7). Output 输出共T行,每行1个对应的数量. Input示例 2…
题目链接:http://lightoj.com/volume_showproblem.php?problem=1138 题意:给你一个数n,然后找个一个最小的数x,使得x!的末尾有n个0:如果没有输出impossible 可以用二分求结果,重点是求一个数的阶乘中末尾含有0的个数,一定和因子5和2的个数有关,因子为2的明显比5多,所以我们只需要求一个数的阶乘的因子中一共有多少个5即可; LL Find(LL x) { LL ans = ; while(x) { ans += x/; x /= ;…
描述 计算n!的十进制表示最后有多少个0 输入 第一行输入一个整数N表示测试数据的组数(1<=N<=100)每组测试数据占一行,都只有一个整数M(0<=M<=10000000) 输出 输出M的阶乘的十进制表示中最后0的个数比如5!=120则最后的0的个数为1 样例输入 6 3 60 100 1024 23456 8735373 分析: http://www.cnblogs.com/hansongjiang/archive/2014/05/06.html 0来源于2*5,且将N!中分…
A Trivial Problem Mr. Santa asks all the great programmers of the world to solve a trivial problem. He gives them an integer m and asks for the number of positive integers n, such that the factorial of n ends with exactly m zeroes. Are you among thos…
题意: 给一个数n,返回其阶乘结果后缀有几个0. 思路: 首先将n个十进制数进行质因数分解,观察的得到只有2*5才会出现10.那么n!应含有min(2个数,5个数)个后缀0,明显5的个数必定比2少,所以后缀0的个数为质因数后的5的个数. 为何这么说?例如n=15,那么{1 2 3 4 6 7 8 9   11 12 13 14 },那么可以产生2的数字有{2,4,6,8,10,12,14},可以产生5的只有{5,10,15},质数中只有2乘以5才能形成10,那么min(2个数,5个数)就决定了可…
目录 @description@ @solution@ @part - 1@ @part - 2@ @part - 3@ @accepted code@ @details@ @description@ 用 N 个不同的字符(编号1 - N),组成一个字符串,有如下要求: (1) 对于编号为 i 的字符,如果2 * i > n,则该字符可以作为结尾字符.如果不作为结尾字符而是中间的字符,则该字符后面可以接任意字符. (2) 对于编号为 i 的字符,如果2 * i <= n,则该字符不可以作为结尾…
1009 数字1的数量 基准时间限制:1 秒 空间限制:131072 KB 分值: 5 难度:1级算法题  收藏  关注 给定一个十进制正整数N,写下从1开始,到N的所有正数,计算出其中出现所有1的个数. 例如:n = 12,包含了5个1.1,10,12共包含3个1,11包含2个1,总共5个1. Input 输入N(1 <= N <= 10^9) Output 输出包含1的个数 Input示例 12 Output示例 5 没怎么学过数位dp,打算好好搞一下~ dp[x]代表1~10^x-1 中…
class Solution {public: int trailingZeroes(int n) {            if(n<=0) return 0; int i=0;           int res=0; while(n){ res+=n/5; n=n/5; } return res;}}; 很神奇的,eg  125 125=25*5,相当于前前面有1,2,3,4,5,……,20,21,22,23,24,25  * 5 125/5 = 25 相当于前面变成0,0,0,0,1,……