hdu1018--斯特灵公式】的更多相关文章

http://acm.hdu.edu.cn/showproblem.php?pid=1018 Big NumberTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 40483 Accepted Submission(s): 19774 Problem DescriptionIn many applications very large integ…
Description 求N!的位数 Input 输入第一行为一个正整数 n(1<=n<=25000). Output 输出 n!的位数. Sample Input 1020 Sample Output 2019 思路 求一个数的位数,我们只需要对其进行以10为底的对数运算.假设有个数是四位数,那么其介于1000-10000中间,log10(1000)-log10(10000),结果为3-4,取4..另外也可以通过斯特林公式求解.这就是说,对于足够大的整数n,这两个数互为近似值.更加精确地:或…
题意 输入一个整数X,求一个整数N,使得N!恰好大于$X^X$. Sol 考试的时候只会$O(n)$求$N!$的前缀和啊. 不过最后的结论挺好玩的 $n! \approx \sqrt{2 \pi n} (\frac{n}{e})^n$ 然后就可以$O(1)$算啦 /* */ #include<iostream> #include<cstdio> #include<cstring> #include<set> #include<algorithm>…
斯特灵公式 Wiki http://zh.wikipedia.org/wiki/斯特林公式 /** \brief hdu 1018 * * \param date 2014/7/24 * \param state AC * \return * */ #include <iostream> #include <fstream> #include <cmath> using namespace std; const double PI=3.1415926; int main…
题意 题目链接 Sol 这篇题解写的非常详细 首先要知道第二类斯特灵数的一个性质 \[m^n = \sum_{i = 0}^m C_{n}^i S(n, i) i!\] 证明可以考虑组合意义:\(m^n\)是把\(n\)个不同的球放到\(m\)个不同的盒子里的方案数 然后用这个式子展开\(i^k\),把组合数展开,会得到这样一个式子 \[\sum_{i=1}^n\frac{n!}{(n-i)!}\sum_{j=0}^i\frac{S(k,j)}{(i-j)!}\] 发现不是很好搞,但是考虑到当\…
http://zh.wikipedia.org/wiki/%E6%96%AF%E7%89%B9%E7%81%B5%E6%95%B0 第一类:n个元素分成k个非空循环排列(环)的方法总数 递推式:s(n+1,k)=s(n,k-1)+n*s(n,k) 解释:考虑第n+1个元素 1.单独形成循环排列,剩下的有s(n,k-1)种方法 2.和别的元素一起形成循环排列,n个元素形成循环排列的方法数是s(n,k),第n+1个可以放在第i个元 素左边,共有n种放法,一共是n*s(n,k) 代码: memset(…
@维基百科 在组合数学,Stirling数可指两类数,都是由18世纪数学家James Stirling提出的. 第一类 s(4,2)=11 第一类Stirling数是有正负的,其绝对值是个元素的项目分作个环排列的方法数目.常用的表示方法有. 换个较生活化的说法,就是有个人分成组,每组内再按特定顺序围圈的分组方法的数目.例如: {A,B},{C,D} {A,C},{B,D} {A,D},{B,C} {A},{B,C,D} {A},{B,D,C} {B},{A,C,D} {B},{A,D,C} {C…
Examining the Rooms Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 1305    Accepted Submission(s): 796 Problem Description A murder happened in the hotel. As the best detective in the town, yo…
<题目链接> <转载于 >>> > 题目大意:有n个锁着的房间和对应n扇门的n把钥匙,每个房间内有一把钥匙.你可以破坏一扇门,取出其中的钥匙,然后用取出钥匙打开另一扇门(如果取出的钥匙能打开房门则接着打开,取出其中钥匙,如此往复,若打不开则继续破坏一扇门).最多可以破坏k(k<=n)扇门,但是编号为1的门只能用钥匙打开.求能打开所有门(被破坏或是被钥匙打开)的概率. 解题分析: 钥匙和门的关系是成环状的,打开一个门之后,该环内的所有房间都可以进入,怎么说呢,…
2017-08-10 21:10:08 writer:pprp //TLE #include <iostream> #include <cstdio> #include <cstring> #include <cstdlib> #include <cmath> #include <algorithm> using namespace std; const int INF = 0x3f3f3f3f; typedef long long…