求一个数的阶乘的位数。
题目规定n最大能取到10的7次方,10的7次方的阶乘肯定表示不了。
但题目仅要求输出位数,取对数的方法就呼之欲出。
简单题。
#include<math.h>
#include<iostream>
using namespace std;
int main()
{
double t,n,i,j;
double index;
int sum;
cin>>t;
while(t--)
{
index=0;j=1;
cin>>n;
for(i=n;i>0;i--)
{
j*=i;
if(j>4000)
{
index+=log10(j);j=1;
}
}
if(j<=4000)index+=log10(j);
sum=(int)index+1;
cout<<sum<<endl;
}
return 0;
}