hdoj1018

来源:互联网 发布:单片机智能饮水机 编辑:程序博客网 时间:2024/06/14 04:49

求阶乘位数,可以使用math自带的log10函数,也可以每一步乘上去,在每一步维护结果小于10(除以10只到结果小于10,每除一次计数器+1,相当于维持科学计数法的表示),最后输出结果为(计数器+1),比log10函数要快

#include<cstdio>int main(){int tcase;int n;int i;double f;int count;scanf("%d",&tcase);for(tcase;tcase>0;tcase--){scanf("%d",&n);f=1.0;count=0;for(i=2;i<n+1;i++){f*=i;while(f>=10.0) {f/=10;count++;}}printf("%d\n",count+1);}}

有人找出了这个结果的近似公式,

    log10(n!) = log10(sqrt(2 * pi * n)) + n * log10(n / e)

π和e精度符合要求能轻松ac

 

0 0
原创粉丝点击