斯特林公式(计算大数阶乘)


#include <iostream>
#include <cstdio>
#include <cmath>
#define PI 3.1415926535898
#define e 2.718281828459
using namespace std;
///斯特林
///n!=sqrt(2*PI*n)*pow(n/e,n)
int main()
{
int n;cin>>n;
while(n--){
long long m;
scanf("%lld",&m);
int len=ceil(log10((double)sqrt(2*PI*m))+m*(log10((double)m/e)));
cout<<len<<endl;
}
return 0;
}

斯特林公式(计算大数阶乘),码迷,mamicode.com

时间: 2024-10-13 00:07:05

斯特林公式(计算大数阶乘)的相关文章

精度计算-大数阶乘

精度计算-大数阶乘 本算法的目的在于计算一个比较大的数的阶乘,由于得到的结果比较大,是现有的数据类型无法存储的,所以我决定将结果存储在一个long a[]数组中. 我们的思路是把每4位数看做数组的一个元素来存储,例如:个.十.百.千存在a[0],万.十万.百万.千万存在a[1]以此类推. 我们用10的阶乘来模拟一下求结果大于4位数阶乘的过程,9的阶乘为362880,而10的阶乘为9的阶乘乘以10,在计算完9的阶乘时a[0] = 2880,a[1]=36,因为362880*10 = (36*10+

【HDOJ1018】【大数阶乘位数】【斯特林公式】

http://acm.hdu.edu.cn/showproblem.php?pid=1018 Big Number Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 41932    Accepted Submission(s): 20544 Problem Description In many applications very lar

NYON28大数阶乘

大数阶乘 时间限制:3000 ms  |  内存限制:65535 KB 难度:3 描述 我们都知道如何计算一个数的阶乘,可是,如果这个数很大呢,我们该如何去计算它并输出它? 输入 输入一个整数m(0<m<=5000) 输出 输出m的阶乘,并在输出结束之后输入一个换行符 样例输入 50 样例输出 30414093201713378043612608166064768844377641568960512000000000000 解析:在开数组的时候一定要开大一点,我开的小怎么都不能通过,气死我了,

nyoj___大数阶乘

http://acm.nyist.net/JudgeOnline/problem.php?pid=28 大数阶乘 时间限制:3000 ms  |  内存限制:65535 KB 难度:3 描述 我们都知道如何计算一个数的阶乘,可是,如果这个数很大呢,我们该如何去计算它并输出它? 输入 输入一个整数m(0<m<=5000) 输出 输出m的阶乘,并在输出结束之后输入一个换行符 样例输入 50 样例输出 3041409320171337804361260816606476884437764156896

#转 大数阶乘算法

大数阶乘算法 大数阶乘算法 前几天朋友问我一个问题:“10000的阶乘怎么算?”当时我就有点懵,“10000”这个数字太大了,无论用什么数据类型保存结果都会溢出.这可怎么办呢?一时间束手无策.然后被一顿鄙视.后来经朋友的提醒,才恍然大悟,终于知道怎么实现了,原来是使用数组来模拟数字,这样无论结果数字有多大,只要数组的长度够长就能表示出来,用这个办法可以进行大数据的运算.看起来还是挺有用的.我把它用程序实现出来,如果有用到的地方还可以借鉴一下.(最起码还可以拿来鄙视别人^_^)首先定义一个足够长的

【大数阶乘】NYOJ-28

大数阶乘 时间限制:3000 ms  |  内存限制:65535 KB 难度:3 描述 我们都知道如何计算一个数的阶乘,可是,如果这个数很大呢,我们该如何去计算它并输出它? 输入 输入一个整数m(0<m<=5000) 输出 输出m的阶乘,并在输出结束之后输入一个换行符 样例输入 50 样例输出 30414093201713378043612608166064768844377641568960512000000000000 [代码] 1 //NYOJ-28 大数阶乘 2 //直接开足够大的数组

NYOJ28 大数阶乘

这是做的第一道大数乘法题,之前一道腾讯校招试题也用的是大数,不过是大数加法,并且在做这道题的时候发现了一种很好的处理数位的方法. 大数阶乘 时间限制:3000 ms  |  内存限制:65535 KB 难度:3 描述 我们都知道如何计算一个数的阶乘,可是,如果这个数很大呢,我们该如何去计算它并输出它? 输入 输入一个整数m(0<m<=5000) 输出 输出m的阶乘,并在输出结束之后输入一个换行符 样例输入 50 样例输出 304140932017133780436126081660647688

HDU 2424-Gary&#39;s Calculator(表达式计算+大数)

Gary's Calculator Time Limit: 5000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 950    Accepted Submission(s): 209 Problem Description Gary has finally decided to find a calculator to avoid making simple cal

大数阶乘(c语言)

大数阶乘.代码比较简单. #include<stdio.h> #include<string.h> #define MAXN 25000 // 如果你的阶乘N比较大,建议大一点 int result[MAXN]; int main() { int i,j,n; scanf("%d",&n); // memset函数的作用将某一段内存设置成指定的值 // 参数1:内存首地址 参数2:指定的值 参数3:内存大小 memset(result,0,sizeof(