Description
N! (N的阶乘) 是非常大的数,计算公式为:N! = N * (N - 1) * (N - 2) * … * 2 * 1)。现在需要知道N!有多少(十进制)位。
Input
每行输入1个正整数N。0 < N < 1000000
Output
对于每个N,输出N!的(十进制)位数。
Sample Input
1
3
32000
1000000
Sample Output
1
1
130271
5565709
/*
N!位数是Lg(N!)+1
Lg(N!)=Lg(1)+…+Lg(N)
*/
#include <bits/stdc++.h>
using namespace std;
int main()
{
int i,n,ans;
double sum;
while(cin>>n)
{
sum=0;
for(i=1;i<=n;i++)
sum+=log10(i);
ans=sum+1;
cout<<ans<<endl;
}
return 0;
}
/*
利用斯特林公式
优化
*/
#include <bits/stdc++.h>
using namespace std;
const double e=2.7182818284590452354,PI=3.141592653589793239;
int main()
{
int n;
double ans;
while(cin>>n)
{
ans=0.5*log10(2*PI*n)+n*log10(n/e);
cout<<(int)ans+1<<endl;
}
return 0;
}