大概的意思:给你一个n,输出n!的位数~~
n<=10000000;
看到上面的讨论,知道了一个数,它的位数有一个计算公式,n的位数= int (long10(n))+1;
从这里来看,n!=1*2*3*4.....*n;
=int long10(1*2*3*4.......*n)+1;
=int(long10(1)+long10(2)+long10(3)+........+long10(n))+1;
具体来说就这样了~~
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
int t;
int n;
double ans;
cin>>t;
while(t--)
{
cin>>n;
ans=0;
for(int i=1;i<=n;i++)
ans+=(log10((double)i));
cout<<(int)ans+1<<endl; //这里要稍微注意一下,如果 ans=(int )ans+1;这样不行,
} //n=10000000时候,输出来的是科学技术方法,会错~~
return 0;
}