2018年全国多校算法寒假训练营练习比赛(第三场) -A不凡的夫夫【附详尽的代码注释和斯特林公式介绍以及推导过程】

链接:https://www.nowcoder.net/acm/contest/75/A
来源:牛客网

题目描述
夫夫有一天对一个数有多少位数感兴趣,但是他又不想跟凡夫俗子一样,
所以他想知道给一个整数n,求n!的在8进制下的位数是多少位。
输入描述:

第一行是一个整数t(0
接下来t行,每一行有一个整数n(0<=n<=10000000)
输出描述:

输出n!在8进制下的位数。
示例1
输入
3
4
2
5
输出
2
1
3

思路解析:这题不需要让计算机算n的阶乘是多少(因为当n非常大时,会很慢),我们可以使用斯特林公式,直接一下就出来了。
先看代码吧,看不懂的话后面有介绍斯特林公式和用斯特林公式求位数的推导过程的PPT:
#include
//万能头文件,包含了目前c++所包含的所有头文件
using namespace std;
const double PI=acos(-1),e=exp(1);
/*
acos()是反余弦函数,cosπ = -1,所以π = acos(-1)
在函数exp(x)中,x就是次方数,这个函数结果相当于e^x
这两个函数均在,cmath中。(cmath是c++语言中的库函数,
其中的c表示函数是来自c标准库的函数,math为数学常用库函数。)
*/
#define ll long long
//定义ll就是long long
int main()
{
    //cout<

PPT下载链接: https://pan.baidu.com/s/1nw16rUx
以下是PPT内容:
第一张:

2018年全国多校算法寒假训练营练习比赛(第三场) -A不凡的夫夫【附详尽的代码注释和斯特林公式介绍以及推导过程】_第1张图片

第二张:
2018年全国多校算法寒假训练营练习比赛(第三场) -A不凡的夫夫【附详尽的代码注释和斯特林公式介绍以及推导过程】_第2张图片

第三张:
2018年全国多校算法寒假训练营练习比赛(第三场) -A不凡的夫夫【附详尽的代码注释和斯特林公式介绍以及推导过程】_第3张图片

你可能感兴趣的:(斯特林公式介绍以及推导过程,算法练习)