如何求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!)));
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<
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯