Problem 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 ≤ 10
7?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
n的位数=log10(n)+1,m=n!,=log10^1+log10^2+...+log10^n
#include<iostream> #include<cstdio> #include<cstring> #include<algorithm> #include<cmath> using namespace std; int main() { int n,m,i,ans; double t; scanf("%d",&n); while(n--) { scanf("%d",&m); t=0; for(i=2;i<=m;++i) t+=log10(i*1.0); ans=int(t)+1; cout<<ans<<endl; } return 0; }