输出n!的位数

n! 约等于 根号下(2πn) * (n/e )^n
那么 res = 1/2*lg(2πn) + nlg(n/e) + 1
实测n很小也是正确的答案

#include<iostream>
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<cmath>
#include<vector>
#include<queue>
#include<stack>
#include<map>
#include<set>
#include<string>
#include<iomanip>
#include<ctime>
#include<climits>
#include<cctype>
#include<algorithm>
#ifdef WIN32
#define AUTO "%I64d"
#else
#define AUTO "%lld"
#endif
using namespace std;
#define smax(x,tmp) x=max((x),(tmp))
#define smin(x,tmp) x=min((x),(tmp))
#define maxx(x1,x2,x3) max(max(x1,x2),x3)
#define minn(x1,x2,x3) min(min(x1,x2),x3)
const int INF=0x3f3f3f3f;
const double pi = M_PI;
const double e = M_E;
const double eps = 1e-7;
typedef long long LL;
inline LL get_res(int n)
{if(n<=10){int tot = 1;for(int i=1;i<=n;i++) tot *= i;return floor(log10(tot) + eps) + 1;}return floor(0.5*log10(2*pi*(double)n) + (double)n*log10((double)n/e) + eps) + 1;
}
int main()
{freopen("stirling.in","r",stdin);freopen("stirling.out","w",stdout);int cas;scanf("%d",&cas);while(cas--){int n;scanf("%d",&n);LL ans = get_res(n);printf(AUTO"\n",ans);}return 0;
}

公式链接:
http://m.blog.csdn.net/article/details?id=51145807

Summary:
cmath里面有π和e的精确值!!!!!!

51nod 1130 阶乘长度 [Stirling公式]相关推荐

  1. POJ_1423(Stirling公式)

    求大数位数:log10()函数,本题规模太大,阶乘用Stirling公式求 Stirling公式: n! = ((2pin)(1/2))*((n/e)n); 前提是n > 3 由此可以导出: l ...

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

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

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

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

  4. poj 1423 stirling公式(阶乘的位数)

    题意:给定一个数(小于10^7),求这个数阶乘的位数. 思路:首先,求一个数n的位数可以用log10(n)向上取整来得到(10的整数次幂要特殊判断).所以所求由log10(1)+log10(2)+lo ...

  5. 求N的阶乘长度(斯特林公式)

    输入N求N的阶乘的10进制表示的长度.例如6! = 720,长度为3. 求N的阶乘长度 计算n!的公式是斯特林公式: 计算一个数的长度为 log10(n) +1 AC代码: /*** ┏┓ ┏┓+ + ...

  6. Stirling公式(pku1423)

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

  7. 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 ...

  8. Wallis公式Stirling公式Gamma函数

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

  9. Stirling公式 求n! 的位数

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

最新文章

  1. Netty with protobuf(二)
  2. Codeforces 38B - Chess
  3. 数据挖掘 pandas基础入门之查看数据
  4. OPENWRT挂载SWAP
  5. spring的aop名词解释
  6. 30分钟通过Kong实现.NET网关
  7. Bootstrap 图片的形状
  8. Oracle物理的体系结构
  9. 用web查看hadoop运行状态
  10. linux以下C 利用openssl的AES库加密,解密
  11. ubuntu16.04安装google中文输入法
  12. Spatial-Temporal时间序列预测建模方法汇总
  13. 掘金小册前端性能优化原理与实践读后总结
  14. 电脑上面的word文档被删除了怎么办?分享四种亲测恢复方法
  15. 精密划片机维护及保养
  16. 打印时去除页眉和页脚
  17. 【蓝桥单片机】51单片机(stc15f)的两个寄存器TCON和TMOD
  18. 利用scrapy爬取58同城租房信息
  19. 汉与匈奴 —— 影响世界之战
  20. 电脑如何修改关闭显示器和休眠时间

热门文章

  1. 关于发表微信朋友圈图片的问题
  2. CSP认证考试笔记-小明种苹果
  3. git 关联远程仓库
  4. DOM深入学习 --- DOM 树介绍,如何遍历 DOM 树节点(一)
  5. APP开发流程实例讲解-儒释道网络电台八天开发全程-在Android Studio中完成界面设计
  6. Burp Suite 详解
  7. 火遍全球的ChatGPT技术简介与主干网络代码
  8. 【HEOI2015】小Z的房间
  9. JSON格式以及JSON校验工具
  10. Unity3D 添加背景音乐及按键音乐