不要被阶乘吓倒
来源:互联网 发布:淘宝升级怎么升级 编辑:程序博客网 时间:2024/05/16 18:10
阶乘(Factorial)是个有意思的函数,但是不少人都比较怕它,我们来看看两个与阶乘相关的问题.
1.给定一个整数N,那么N的阶乘N!!末尾有多少个0呢?例如:N=10,N!=3628 800的末尾有两个0...
2.对于N!的二进制表示中最低位1的位置.
解:
问题一的解法一:
第一个问题比较简单我一下就想出来,就是知道N!中有多少个2的,和多少个5乘就可以,并且5的个数一个小于2,所以我写出的算法为:
#include<iostream>
using namespace std;
int main(int argc, char* argv[])
{
int N;
int num=0;
while(cin>>N)
{
while(N)
{
if(N%5 == 0)
num++;
N--;
}
cout<<num<<endl;
num = 0;
}
return 0;
}
其时间复杂度为O(n)而已.
解法二:
这解法也相当经典公式:z = [N/5] + [N/5(2)] + [N/5(3)]+.......(不用担心这会是一个无穷的运算,因为总存在一个K,使得5(k)>N, N/5(k) = 0.)
ret = 0;
while(v)
{
ret+=v/5;
v/=5;
}
- 不要被阶乘吓倒
- 不要被阶乘吓倒
- 不要被阶乘吓倒
- 不要被阶乘吓倒
- 不要被阶乘吓倒
- 不要被阶乘吓倒
- 不要被阶乘吓倒
- 不要被阶乘吓倒
- 不要被阶乘吓倒
- 不要被阶乘吓倒
- 2.2 不要被阶乘吓倒
- 试题答案_不要被阶乘吓倒
- 编程之美--不要被阶乘吓倒
- [编程之美]不要被阶乘吓倒
- 编程之美---不要被阶乘吓倒
- 2.2不要被阶乘吓倒(读书笔记)
- 编程之美:不要被阶乘吓倒
- 不要被阶乘吓倒(1)
- Lucene深入研究(1)
- frames分割窗口
- 使用javascript获取按钮id(in jsf)
- VMware+windbg 驱动的源码调试
- ajax 返回dataset
- 不要被阶乘吓倒
- Oracle 报错项
- 创建项目和第一个Hello world
- Win2003_IIS6服务器设置排错解答
- 一些java的基础知识
- nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name '(inner bean)#1': Can
- 教程的下载地址
- 一些java的基础知识
- install&test PHPMailer