Problem 1050 Number lengths
Accept:858 Submit:1819
Time Limit: 1000mSec MemoryLimit : 32768 KB
ProblemDescription
N! (N factorial) can be quite irritating and difficult tocompute for large values of N. So instead of calculating N!, I wantto know how many digits are in it. (Remember that N! = N * (N - 1)* (N - 2) * ... * 2 * 1)
Input
Each line of the input will have a single integer N on it 0< N < 1000000 (1 million). Input isterminated by end of file.
Output
For each value of N, print out how many digits are in N!.
SampleInput
1 3 32000
SampleOutput
1 1 130271
#include<stdio.h>
#include<math.h>
#define PI 3.1415926
int main()
{
int n;
while(scanf("%d",&n)!=EOF)
printf("%d\n",(int)((n*log(n)-n+0.5*log(2*n*PI))/log(10.0))+1);
return0;
}
史特林公式 N!位数应该是 log10(1)+log10(2)+···+log10(n) 取整加1 log函数需要传入double型变量,而它返回的也是double型
#include<stdio.h>
#include<math.h>
#define PI 3.1415926
int main()
{
}