3000: Big Number Time Limit: 2 Sec  Memory Limit: 128 MB Submit: 220  Solved: 62 [Submit][Status] Description 给你两个整数N和K,要求你输出N! 的K进制的位数. Input 有多组输入数据.每组输入数据各一行,每行两个数--N.K Output 每行一个数为输出结果. Sample Input 2 5 2 10 10 10 100 200 Sample Output 1 1 7 69…
题目: https://www.lydsy.com/JudgeOnline/problem.php?id=3000 题解: 首先n很大,O(n)跑不过,那么就要用一些高端 而且没听过 的东西——stirling公式 shirling公式:   n!≍√(2πn)*(n/e)^n 这个公式对于n很大的解还是有很高的准确度的,但是对于n比较小的情况就会有误差. 所以对于n很小就暴力. 注意用log的一堆公式: lg(a*b)=lg(a)+lg(b):lg(a/b)=lg(a)-lg(b); lg (…
Description 给你两个整数N和K,要求你输出N!的K进制的位数. Input 有多组输入数据,每组输入数据各一行,每行两个数——N,K Output 每行一个数为输出结果. Sample Input 2 5 2 10 10 10 100 200 Sample Output 1 1 7 69 HINT 对于100%的数据,有2≤N≤2^31, 2≤K≤200,数据组数T≤200. Source Solution 安利一个高深的公式:Stirling公式 用这个公式,当n较大时很精确,而且…
我们知道整数n的位数的计算方法为:log10(n)+1n!=10^m故n!的位数为 m = log10(n!)+1 lgN!=lg1+lg2+lg3+lg4+lg5+....................+lgN; 但是当N很大的时候,我们可以通过数学公式进行优化:(即Stirling公式) N!=sqrt(2*pi*N)*(N/e)^N:(pi=3.1415926=acos(-1.0),e=exp(1)) lgN!=(lg(2*pi)+lgN)/2+N*(lgN-lge); 斯特林公式可以用…
题目大意 求N!有多少位 题解 用公式直接秒杀... 代码: #include<iostream> #include<cmath> using namespace std; #define ESP 1e-9 #define Pi acos(-1) #define e exp(1.0) int main() { int T; cin>>T; while(T--) { int digit; double n; cin>>n; digit=(*Pi*n)+n*lo…
题目大意 求n!在k进制下的位数 2≤N≤2^31, 2≤K≤200 分析 作为数学没学好的傻嗨,我们先回顾一下log函数 \(\log_a(b)=\frac 1 {log_b(a)}\) \(\log_a (x^k)=k*\log_a x\) \(\log_a(bc)=log_a(b)+log_a(c)\) 嗯嗯,呵呵 我们要求的是\(log_k(n!)\) n大处理不了 用斯特林公式 \(n! \approx \sqrt{2\pi n} * (\frac n e)^n\) \(\log_k(…
Stirling公式: n!约等于sqrt(2*pi*n)*(n/e)^n 另外,e约等于2.71828182845409523... 试了一下发现math库里面并不能像pi一样直接调e但是发现挺好记的..>_< POJ1423 题面很简单,就是让我们计算n!的位数. 我们知道十进制数的位数=trunc(ln(n)/ln(10))+1 而对于n=a*b,ln(n)=ln(a)+ln(b) 所以ln(sqrt(2*pi*n)*(n/e)^n)=ln(sqrt(2*pi*n))+n*ln(n/e)…
公式求值 输入n, m, k,输出图1所示的公式的值.其中C_n^m是组合数,表示在n个人的集合中选出m个人组成一个集合的方案数.组合数的计算公式如图2所示. 输入的第一行包含一个整数n:第二行包含一个整数m,第三行包含一个整数k. 计算图1所示的公式的值,由于答案非常大,请输出这个值除以999101的余数. [样例输入1] 3 1 3 [样例输出1] 162 [样例输入2] 20 10 10 [样例输出2] 359316 [数据规模与约定] 对于10%的数据,n≤10,k≤3: 对于20%的数…
p{ font-size: 15px; } .alexrootdiv>div{ background: #eeeeee; border: 1px solid #aaa; width: 99%; padding: 5px; margin: 1em 0 1em 0; } .alextitlep{ font-size: 18px; font-weight: bold; color: red; } .alexrootdiv span{ color:blue;font-weight:bold; } .al…
斯特灵公式是一条用来取n阶乘近似值的数学公式.一般来说,当n很大的时候,n阶乘的计算量十分大,所以斯特灵公式十分好用.从图中可以看出,即使在n很小的时候,斯特灵公式的取值已经十分准确. 公式为:    从图中看出,对于足够大的整数n,这两个数互为近似值.更加精确地:        或者         这个公式,以及误差的估计,可以推导如下.我们不直接估计n!,而是考虑它的自然对数:     按一般方法计算N的阶乘,其时间复杂度为O(N):    N!= 1 * 2 * 3 * 4 * 5 *…