HDU 1018 阶乘的位数 stirling公式
来源:互联网 发布:mysql配置文件在哪 编辑:程序博客网 时间:2024/04/30 08:52
用Stirling公式计算n!结果的位数时,可以两边取对数,得:
log10(n!) = log10(2*PI*n)/2+n*log10(n/E);
故n!的位数为 log10(2*PI*n)/2+n*log10(n/E)+1(注意:当n=1时,算得的结果为0)
n的位数为[lg10(n)]+1
n!的位数为[lg10(n*(n-1)*(n-2)*…..*1)]+1=[lg10(n)+lg10(n-1)+lg10(n-2)+….+lg10(1)]+1
直接取LOG
#include<stdio.h>#include<math.h>int main(){ int t; scanf("%d",&t); while(t--) { int n,i; double sum=0; scanf("%d",&n); for(i=1;i<=n;i++) { sum+=log10(double(i)); } printf("%d\n",(int)(sum)+1); } return 0;}
用stirling公式 968ms-->15ms
Accepted101815MS204K357 B
#include<stdio.h>#include<math.h>int stirling(int n){ double PI=acos(double(-1)); double e=exp(double(1)); return int(log10(sqrt(2*PI*n))+n*log10(n/e))+1;}int main(){ int t; scanf("%d",&t); while(t--) { int n; scanf("%d",&n); printf("%d\n",stirling(n)); } return 0;}
- HDU 1018 阶乘的位数 stirling公式
- hdu 1018 Stirling 求阶乘位数
- poj 1423 stirling公式(阶乘的位数)
- hdu 1018 Big Number(公式求阶乘位数)
- hdu 1018 Big Number (求一个数的阶乘的位数,公式!!!)
- hdu 1018阶乘位数
- 利用斯特林(Stirling)公式求解n!的位数
- 利用斯特林(Stirling)公式求解n!的位数
- hdu 1018 Big Number(Stirling公式)
- HDU 1018 求阶乘的位数
- OJ上关于阶乘位数的公式
- 51nod 1130 阶乘长度 [Stirling公式]
- hdu 1018 -Big Number(求n的阶乘的位数)
- hdu(1018)Big Number(阶乘位数的计算)
- hdu 1018 计算一个数阶乘的位数
- HDU--1018--Big number!(计算阶乘结果的位数)
- 51nod 1058 N的阶乘的长度 (Stirling公式)
- 阶乘与 pi 的关系 —— 斯特林公式(Stirling formula)
- SQL Server中的SELECT 语句
- STL学习笔记之 (四)容器 list
- Clear Case V7.0 官网下载地址
- 开闸。放水!!hdu 1015
- 集群计算
- HDU 1018 阶乘的位数 stirling公式
- 拿下AJAX(一)——AJAX初体验
- hdu 4192 #模拟计算+全排列
- 链表中随机取出k个数 - 蓄水池抽样
- 黑马程序员_day02 语句。
- 输入校验的流程
- Tomcat version 6.0 only supports J2EE 1.2, 1.3, 1.4, and Java EE 5 Web modules
- Tiny6410 JTAG调试终于搞定
- 黑马程序员_day03 函数。