现在的位置: 首页 > 综合 > 正文

hdu1018

2013年06月18日 ⁄ 综合 ⁄ 共 323字 ⁄ 字号 评论关闭

求n!的位数,令k=log10(p);

若k是整数,则k+1就是p的位数,否则,对k取整加1,

n!肯定不是10的整数次幂,由对数函数的性质可得

log10(n!)=log10(1)+log10(2)+......+log10(n);

然后对log10(n!)取整加1就是n!的位数.

#include<math.h>
#include<stdio.h>
int main()
{
    int n,t,i;
    double s;
    scanf("%d",&t);
    while(t--)
    {
        scanf("%d",&n);
        s=0;
        for(i=1;i<=n;i++)
        {
            s+=log10((double)i);
        }
        int S=(int)s+1;
        printf("%d\n",S);
    }
    return 0;
}

抱歉!评论已关闭.