Stirling公式:n!与sqrt(2πn) * n^n * e^(-n)的值十分接近

所以log10(n!) = log(n!) / log(10) = ( n*log(n) - n + 0.5*log(2*π*n))/log(n);

代码:

#include <algorithm>
#include <iostream>
#include <sstream>
#include <cstdlib>
#include <cstring>
#include <iomanip>
#include <cstdio>
#include <string>
#include <bitset>
#include <vector>
#include <queue>
#include <stack>
#include <cmath>
#include <list>
#include <map>
#include <set>
#define sss(a,b,c) scanf("%d%d%d",&a,&b,&c)
#define mem1(a) memset(a,-1,sizeof(a))
#define mem(a) memset(a,0,sizeof(a))
#define ss(a,b) scanf("%d%d",&a,&b)
#define s(a) scanf("%d",&a)
#define p(a) printf("%d\n", a)
#define INF 0x3f3f3f3f
#define w(a) while(a)
#define PI acos(-1.0)
#define LL long long
#define eps 10E-9
#define N 100000
#define mod 100000000
using namespace std;
void mys(int& res)
{int flag=0;char ch;while(!(((ch=getchar())>='0'&&ch<='9')||ch=='-'))if(ch==EOF)  res=INF;if(ch=='-')  flag=1;else if(ch>='0'&&ch<='9')  res=ch-'0';while((ch=getchar())>='0'&&ch<='9')  res=res*10+ch-'0';res=flag?-res:res;
}
void myp(int a)
{if(a>9)myp(a/10);putchar(a%10+'0');
}
/*************************THE END OF TEMPLATE************************/
double stirling(int n){return ceil((n*log(double(n))-n+0.5*log(2.0*n*PI))/log(10.0));
}
int main()
{int cas,n;scanf("%d",&cas);while(cas--){scanf("%d",&n);if(n<=1)printf("1\n");else printf("%.0lf\n",stirling(n));}return 0;
}

hdu1018 Big Number stirling公式相关推荐

  1. [BZOJ3000] Big Number (Stirling公式)

    Description 给你两个整数N和K,要求你输出N!的K进制的位数. Input 有多组输入数据,每组输入数据各一行,每行两个数--N,K Output 每行一个数为输出结果. Sample I ...

  2. Stirling公式(pku1423)

    Stirling 公式 即: Stirling公式的意义在于:当n足够大时,n!计算起来十分困难,虽然有很多关于n!的等式,但并不能很好地对阶乘结果进行估计,尤其是n很大之后,误差将会非常大.但利用S ...

  3. Stirling公式的应用

    Stirling公式也叫做斯特林公式,是用来取N! 的近似值. 在编程中,也用到了Stirling数的思想来解决以下问题. 第一类Stirling公式 题目 把n个物体排成k个非空循环的方法数目. S ...

  4. Stirling公式

    Stirling 公式 Stirling公式 1.阶乘 n!=n(n−1)(n−2)⋯×3×2×1(n≥1)n! = n(n-1)(n-2)\cdots\times3\times2\times1\qu ...

  5. Wallis公式Stirling公式Gamma函数

    Wallis公式 (!!是双阶乘,不超过这个整数且具有相同奇偶的正整数相乘,比如5!!=1×3×5, 6!!=2×4×6) 利用Wallis公式推导Stirling公式 斯特林公式是一条用来取n阶乘近 ...

  6. 【数论】斯特林公式 ——Stirling公式(取N阶乘近似值)

    斯特灵公式是一条用来取n阶乘近似值的数学公式.一般来说,当n很大的时候,n阶乘的计算量十分大,所以斯特灵公式十分好用.从图中可以看出,即使在n很小的时候,斯特灵公式的取值已经十分准确. 公式为:    ...

  7. Stirling公式 求n! 的位数

    Stirling 公式 即: Stirling公式的意义在于:当n足够大时,n!计算起来十分困难,虽然有很多关于n!的等式,但并不能很好地对阶乘结果进行估计,尤其是n很大之后,误差将会非常大.但利用S ...

  8. 用Stirling公式的应用

    /* 求m!的位数,1<=m<=10^7.时间1s. 使用Stirling公式进行求解  n!~~~~~~(n/e)^n(2*pi*n)^(1/2) */ #include<iost ...

  9. 斯特林公式 ——Stirling公式(取N阶乘近似值)(转)

    斯特灵公式是一条用来取n阶乘近似值的数学公式.一般来说,当n很大的时候,n阶乘的计算量十分大,所以斯特灵公式十分好用.从图中可以看出,即使在n很小的时候,斯特灵公式的取值已经十分准确. 公式为:    ...

最新文章

  1. Oracle 序列和触发器
  2. python接口返回json处理_python 接口返回的json字符串实例
  3. Boost:基于Boost的优先调度器程序
  4. [SpringBoot2]yaml
  5. composer-安装插件包
  6. sheets.add示例_Java ArrayDeque add()方法与示例
  7. .Net Core 2.0+ InfluxDB+Grafana+App Metrics 实现跨平台的实时性能监控
  8. 计算机专业开题报告指导老师意见评语,开题报告指导教师评语
  9. 模拟get和post请求(支持自定义header和测试CDN节点)
  10. python——redis
  11. java去0,Java如何处理除零?
  12. FSCapture录屏软件
  13. 微信小程序-colorUI组件库
  14. 怎样用python录音_python实现录音功能(可随时停止录音)
  15. A* 算法求解八数码问题
  16. Matlab之使用linearization估计人口数量
  17. 置信传播算法(Belief Propagation)简介
  18. 2021-10-27 turtle 绘画创意图形(梅花)
  19. vscode调试html页面status200无法访问此网站 localhost 拒绝了我们的连接请求
  20. 定制个性化App 引领企业跨入互联网时代

热门文章

  1. 达令再获5亿元融资 光际资本产业基金参投
  2. Linux C 输入输出重定向
  3. Flutter 自定义插件基础
  4. 计算机课程评价的标准,信息技术课程课堂教学评价标准
  5. android微信二维码收款hook,【第一篇】【安卓微信】HOOK微信发消息,当HOOK遇上HOOK。...
  6. Scratch(二十二):家务大转盘
  7. 安卓8.1运行linux,在 Linux 上安装安卓 8.1 Oreo 来运行应用程序和游戏 | Linux 中国...
  8. Java版种子推荐_2个跨度极大特性种子,各大Java版都适用
  9. 【公路村村通】【PTA】【python】【kruskal】
  10. 如何做一场成功的小程序带货直播呢?