C++求n!中0的个数

/*#include <iostream>
using namespace std;
//2014!里面0的个数.
int Giral(int x)
{
	int i=0;
	int j=0;
	while(x)
	{
		int sum = x;
		if(x%2==0)
			{
		while(x%2==0)
			{
				x/=2;
				i++;
			}
			}
			if(x%5==0)
			{
			while(x%5==0)
			{
				x/=5;
				j++;
			}
			}
		sum--;
		x=sum;
	}
	return i>j?j:i;
}
int main()
{
	cout<<Giral(2014)<<endl;
	//这个不好测试,我测试了20以内的数字.
	return 0;
}
*/

/*#include <iostream>
using namespace std;
//怎样只用4行代码写出一个从字符串到长整形的函数
int Grial(const char *str)
{
	int sum=0;
	while(*str!='\0')
	{
			sum=(sum*10)+(*str-'0');
			str++;
	}
	return sum;

}
int main()
{
	const char p[] = "1234567";
	cout<<Grial(p)<<endl;
	return 0;
}*/

/*#include <iostream>
using namespace std;
//有yi个整数数组,请求出两两之差绝对值最小的值。
int Set(int x)
{
	return x>=0?x:(-x);
}
int Grial(int a[],int n)
{
	int min=Set(a[0]-a[1]);
	for(int i=0;i<n-1;i++)
		{
			for(int j=i+1;j<n;j++)
			{
				min= (Set(a[i]-a[j])<min)?(Set(a[i]-a[j])):min;
			}
		}
	return min;
}
int main()
{
		int a[]={3,7,9};
		cout<<Grial(a,3)<<endl;
}*/

时间: 2024-08-06 16:06:01

C++求n!中0的个数的相关文章

算法题:求二进制位中0的个数

#include <iostream> using namespace std; //古有求二进制数中1的个数,今有求二进制中0的个数. int Grial(int x) { int count = 0; while (x + 1) { count++; x |= (x + 1); } return count; } int main() { cout << Grial(1) << endl; return 0; } //为了方便验证,我把求二进制数中1的个数也写下来.

51nod_1003 阶乘后面0的数量(求N!中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 tmp

求二进制数中1的个数(编程之美)

求二进制数中1的个数 继京东618店庆时买的<编程之美>这本书,翻了翻,发现里面的题还是挺有意思的,看起来我们觉得很简单的题目,解法却有很多很多种,真是一个比一个巧妙,于是,决定记录一下. 书中的题目如下 对于一个字节(8bit)的无符号数,求其二进制表示中"1"的个数,要求算法的执行效率尽可能高. 就像书中给我们说的一样,我们一般人可能想到的解决方法如下 int countOne(int n){ int count=0; while(n){ if(n%2==1){ cou

Acdream1084 寒假安排 求n!中v因子个数

题目链接:点击打开链接 寒假安排 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 128000/64000 KB (Java/Others) SubmitStatistic Next Problem Problem Description 寒假又快要到了,不过对于lzx来说,头疼的事又来了,因为众多的后宫都指望着能和lzx约会呢,lzx得安排好计划才行. 假设lzx的后宫团有n个人,寒假共有m天,而每天只能跟一位后宫MM约会,并且由于后宫

编程之美-02数字之魅-求二进制数中1的个数

题目:求二进制数中 1 的个数 对于一个字节(8bit)的无符号整型变量,求其二进制表示中"1"的个数,要求算法的执行效率尽可能地高. 解法一:移位->判断->累计 解法二:除2->判断->累计 解法三:v &= (v -1)需要掌握 ? 2 3 4 5 6 7 8 int num = 0; while(v) {     v &= (v -1);     num++; } return num; ? 2   解法四:分支操作(swicth-cas

求数组中任意两个数之间所有数字的和

303. Range Sum Query - Immutable   求数组中任意两个数之间所有数字的和 QuestionEditorial Solution My Submissions Total Accepted: 37248 Total Submissions: 146945 Difficulty: Easy Given an integer array nums, find the sum of the elements between indices i and j (i ≤ j),

求二进制数中1的个数——引发的问题

<编程之美>书中有这样的一道问题“求二进制数中1的个数” 题目:对于一个字节(8bit)的无符号整形变量,求其二进制中“1”的个数,要求算法的执行效率尽可能高. 我使用java语言处理:输出结果是3 public class Count { public static int Count(byte d){ int num = 0; while (d != 0) { d &= (d-1);//比较1的个数 num++; } return num; } public static void

【位运算】求二进制数中1的个数

1 import java.util.Scanner; 2 3 /** 4 * 功能:位运算,求二进制数中1的个数 5 * 思路:通过每次右移一位,并与1进行与运算,判断该位是否是1,最后统计个数. 6 */ 7 public class Main4 { 8 9 public int count(int num) { 10 11 if (num <= 0) { 12 return 0; 13 } 14 15 int count = 0; 16 17 while (num > 0) { 18 i

阶乘中0的个数

任何一个数分解质因数后,表达为2的x1次方   *     3的x2次方   *    5 的x3次方  等等 0的来源于2*5,x1>x2 ,所以阶乘中0的个数为5的个数,下面就很简单了. http://acm.nyist.net/JudgeOnline/problem.php?pid=84 import java.util.Scanner; public class Main { public static void main(String[] args) { // TODO Auto-ge