算出N的阶乘(N!)一共有多少位

这是一道国外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;
}
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值