[HDOJ]1018. Big Number

      恩,简单的数学题目。

      简单推导如下:

log10(n!) = log10(n*n-1*n-2......*2*1) = log10(n) + log10(n-1) + log10(n-2) + ...... + log10(2) + log10(1)

log10(100) = 2;
log10(200) = 2.301;
log10(1000) = 3;
log10(1500) = 3.176;
你能看出规律来了吗,呵呵,对头,就是这样子的。

#include <iostream>
#include 
<cmath>
using namespace std;
int main()
{
    
int n,m;
    
double cnt;
    cin
>>n;
    
while(n--)
    
{
        cnt 
= 0.0;
        cin
>>m;
        
for(int i = 1;i <= m;++i)
            cnt 
= cnt + log10(i*1.0);
        
int digit_cnt = (int)(cnt) + 1;
        cout
<<digit_cnt<<endl;
    }

    
return 0;
}

posted on 2009-04-20 11:59  笔记  阅读(431)  评论(0编辑  收藏  举报

导航