题目:
description:
In many applications very large integers numbers are required. Some of these applications are using keys for secure transmission of data, encryption, etc. In this problem you are given a number, you have to determine the number of digits in the factorial of the number.
Input:
Input consists of several lines of integer numbers. The first line contains an integer n, which is the number of cases to be tested, followed by n lines, one integer 1 ≤ n ≤ 107 on each line.
Output:
The output contains the number of digits in the factorial of the integers appearing in the input.
Sample Input
2
10
20
Sample Output
7
19
解析:
1. 本题题意,求阶乘结果的位数
2. 本题其实就是一个数学公式解决。斯特林公式:lnN!=NlnN-N+0.5ln(2N*pi)
3. 百度百科链接
#include #include #define pi 3.1415926 int main() { int ans,i,t,n; scanf("%d",&t); while(t--) { scanf("%d",&n); ans=(n*log(n)-n+0.5*log(2*n*pi))/log(10); ans+=1; printf("%d\n",ans); } return 0; }