1787: 数论专题训练A——PowerOJ

计算n!的位数。
Input
多组数据输入,每次输入一个自然数n,n<=10^9
Output
n!的位数
Sample Input
Raw
10
20
Sample Output
Raw
7
19


解题思路:1.斯特林近似
在这里插入图片描述
2.n的位数=lg(n)+1;

#include<bits/stdc++.h>
using namespace std;
int main()
{
    int n;
    while(~scanf("%d",&n))
    {
        if(n==0)
        {
            printf("1\n");
            continue;
        }
        double ans=log10(sqrt(2*acos(-1.0)*n))+n*log10(n/exp(1.0));
        printf("%d\n",(int)ans+1);
    }
    return 0;
}
发布了36 篇原创文章 · 获赞 10 · 访问量 1918

猜你喜欢

转载自blog.csdn.net/weixin_44003265/article/details/102614568