给你一个大数 n ,计算 n! 有多少位数

来源:互联网 发布:c语言韩信点兵点人数 编辑:程序博客网 时间:2024/05/16 12:03

*给你一个大数 n ,计算 n! 有多少位数
*分析:
*   123456=1.23456*10^5;
*   log10(123456)=5.09151;
*   log10(1.23456*10^5)=log10(1.23456)+log10(10^5)=0.09151+5;
*   故int(log10(n))+1 就是n的位数
#include<iostream>#include<cmath>using namespace std;int main(){    int n,test,i,ans;    double t;    cin>>test;    while(test--)    {        cin>>n;        t=0;        for(i=2;i<=n;i++)            t+=log10(i*1.0);        ans=int(t)+1;        cout<<ans<<endl;    }    return 0;}