算出N的阶乘(N!)一共有多少位
2015-01-28 10:45
1046 查看
这是一道国外Apple公司的面试题,需要高等数学知识
输入任意一个数字N(N>=1) 算出N的阶乘(N!)一共有多少位
比如输入10
10! = 3628800
10的阶乘是 3628800
位数为7
在比如输入25
25! = 15511210043330985984000000
一共有 26位
注意不能把某个数的阶乘算出在统计位数
这里方便测试,给三个阶乘数字例子:
56 !=
710998587804863451854045647463724949736497978881168458687447040000000000000
123! =
1214630436702532967576624324188129585545421708848338231532891816182923589236216766883115696061264020
2170735835221294047782591091570411651472186029519906261646730733907419814952960000000000000000000000
000000
345! =
2421563865079234655870005369198585557012055604025865273483978326703996172017832359317473904791361707
9695531502689473012213820889134885853992818438056445080201482863675240494802269823110125881000284687
3771043764007922001651278559084980475073479554466030939643269870873113942746842373083985029113049697
1971509806802549750490073058021701657327001169846737892429155078087360515473687954260255463555842826
5690302091342359471863508627516511203478353542187151045838267239168928747525890559708487655213488727
5308849685587163850004369891294795278330103405177606883453687157290200153368625343538769148712017766
9920587866285855585726554423099917844925644800000000000000000000000000000000000000000000000000000000
0000000000000000000000000000
python测试脚本(python a.py):
#!/usr/bin/env python
n=999
n = int(raw_input("input your number:"))
print reduce(lambda x,y:x*y, range(1,n+1))
C:
#include <stdio.h>
#include <math.h>
int main(int argc, const char * argv[])
{
int i,n;
double sum=0.0;
scanf("%d",&n);
for(i=2;i<=n;i++)
{
sum+=log10(i);
}
if(n==1)
sum=1;
printf("%d",(int)ceil(sum));
return 0;
}
输入任意一个数字N(N>=1) 算出N的阶乘(N!)一共有多少位
比如输入10
10! = 3628800
10的阶乘是 3628800
位数为7
在比如输入25
25! = 15511210043330985984000000
一共有 26位
注意不能把某个数的阶乘算出在统计位数
这里方便测试,给三个阶乘数字例子:
56 !=
710998587804863451854045647463724949736497978881168458687447040000000000000
123! =
1214630436702532967576624324188129585545421708848338231532891816182923589236216766883115696061264020
2170735835221294047782591091570411651472186029519906261646730733907419814952960000000000000000000000
000000
345! =
2421563865079234655870005369198585557012055604025865273483978326703996172017832359317473904791361707
9695531502689473012213820889134885853992818438056445080201482863675240494802269823110125881000284687
3771043764007922001651278559084980475073479554466030939643269870873113942746842373083985029113049697
1971509806802549750490073058021701657327001169846737892429155078087360515473687954260255463555842826
5690302091342359471863508627516511203478353542187151045838267239168928747525890559708487655213488727
5308849685587163850004369891294795278330103405177606883453687157290200153368625343538769148712017766
9920587866285855585726554423099917844925644800000000000000000000000000000000000000000000000000000000
0000000000000000000000000000
python测试脚本(python a.py):
#!/usr/bin/env python
n=999
n = int(raw_input("input your number:"))
print reduce(lambda x,y:x*y, range(1,n+1))
C:
#include <stdio.h>
#include <math.h>
int main(int argc, const char * argv[])
{
int i,n;
double sum=0.0;
scanf("%d",&n);
for(i=2;i<=n;i++)
{
sum+=log10(i);
}
if(n==1)
sum=1;
printf("%d",(int)ceil(sum));
return 0;
}
相关文章推荐
- 问一道算法题:算出这些直线一共有多少个交点
- 算出n阶乘有多少个尾随零
- 程序员面试金典——解题总结: 9.17中等难题 17.3设计一个算法,算出n阶乘有多少个尾随0
- 一只皮球从100米的高处落地,每次落地后反弹是原高度的一半再落下,算出这只皮球在第10次落下后一共经历多少米?第10次反弹的高度是多少?
- 判断从出生到18岁生日一共度过了多少天
- 一共需要多少级?
- abcde五人打渔,打完睡觉,a先醒来,扔掉1条鱼,把剩下的分成5分,拿一份走了;b再醒来,也扔掉1条,把剩下的分成5份, 拿一份走了;然后cde都按上面的方法取鱼。问他们一共最少打了多少条鱼
- 给定一个整数N,那么N的阶乘N!末尾有多少个0
- 阶乘后面总共有多少个零
- hdu1124 数论 N阶乘有多少个尾0
- 200的阶乘即200!是多少?一个简陋的大数加、乘方法
- 【算法分析】统计1到N中一共用到多少个0,1,2,3......
- n!阶乘后面有多少个零
- 假设银行一年整存零取的月息为0.63%。现在某人手中有一笔钱, 他打算在今后的5年中的每年年底取出1000元, 到底5年时刚好取完,请算出他存钱时应存入多少?
- 求大数的阶乘有多少位
- 用十进制计算30!(30的阶乘),将结果转化成3进制进行表示的话,该进制下的结果末尾会有多少个0?
- 新闻联播一共多少集啊,什么时候放大结局啊?
- 打靶问题。一个射击运动员打靶,靶一共有10环,连开10 枪打中90环的可能性有多少?
- 计算1024的阶乘结果有多少个0
- 100阶乘末尾有多少个零?