51nod 1058 N的阶乘的长度 (Stirling公式)


输入N求N的阶乘的10进制表示的长度。例如6! = 720,长度为3。
Input
输入N(1 <= N <= 10^6)
Output
输出N的阶乘的长度
Input示例
6
Output示例
3

取对数来找位数!

#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
using namespace std;
int main()
{
	int i,j,n;
	double sum;
	sum=1;
	cin>>n;
	for(i=1;i<=n;i++) {
		sum+=log10(double(i));
	}
	cout<<(int)sum<<endl;
	return 0;
}

斯特林公式来求解“


#include <iostream>
#include <algorithm>
#include<string.h>
#include<stdio.h>
#include<math.h>
using namespace std;
const double PI=3.1415926;
int main()
{
    int t,n,a;
    while(scanf("%d",&n)!=EOF)
    {
        a=(int)((0.5*log(2*PI*n)+n*log(n)-n)/log(10));
        printf("%d\n",a+1);
    }
    return 0;
}






你可能感兴趣的:(51nod 1058 N的阶乘的长度 (Stirling公式))