永发信息网

如何求N阶乘的最高位,求大牛啊,最好能具体点,谢啦,呵呵~ 注:N不大于100万。求算法或C++程序。

答案:2  悬赏:20  手机版
解决时间 2021-02-11 08:59
  • 提问者网友:低吟詩仙的傷
  • 2021-02-10 23:03
如何求N阶乘的最高位,求大牛啊,最好能具体点,谢啦,呵呵~ 注:N不大于100万。求算法或C++程序。
最佳答案
  • 五星知识达人网友:等灯
  • 2021-02-11 00:23
设N!=x.yzzyz*10^k
x=1~9
取以10为底的对数
log(N!)=k+log(x.yzzyz)
可见x.yzzyz=10^( log(N!)-(int)log(N!));
x=(int)(10^( log(N!)-(int)log(N!)));
log(N!)=log(1)+....+.....+log(N)
也就是说先计算以10为底的log(N!)
算好了求得它的整数部分(int) log(N!)
然后获得小数部分( log(N!)-(int)log(N!))
然后求10的方幂 pow(10,( log(N!)-(int)log(N!)));
然后取整就得到了(int)pow(10,( log(N!)-(int)log(N!)));
全部回答
  • 1楼网友:街头电车
  • 2021-02-11 01:23
你好! int Fac(unsigned n) { const int MAX_LEN = 1000; int i,j,d,c,t; int arr[MAX_LEN]; arr[0]=1; d=1; for(i=2; i<=n; i++) { for(j=0,c=0; j= 10) arr[d-1] /= 10; return arr[d-1]; } int main() { int i; cin>>i; cout<
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯