天天看點

hdu 1018 Big NUmber

#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;
}
           

題意:給你一個數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的位數