数论
LLawliet
代码人生
展开
-
卡特兰数
令h(1) = 1, h(0) = 1,catalan数满足递归式:h(n) = h(0) * h(n - 1) + h(1) * h(n - 2) +....+ h(n - 1) * h (0) (其中n >= 2)关系式:h(n) = C(2n, n) / (n + 1) (n = 1, 2, 3....)递归式:h(n) = h(n - 1) * (4 * n - 2)原创 2011-11-16 10:55:31 · 932 阅读 · 0 评论 -
JOJ1926:Factovisors
传送门:http://acm.jlu.edu.cn/joj/showproblem.php?pid=1926题意:求解m是否可以整除n!。思路:先把素数筛选出来,因为n和m都是2^31 - 1的范围,所以50000应该足够了。之后将m分解质数,得到质数数组和其个数,用所得的素数数组对n!里面寻找相质数的个数,看是否大于m中的个数。代码:#include #include原创 2011-11-22 14:37:24 · 321 阅读 · 0 评论 -
JOJ2179:Dividable
传送门:http://acm.jlu.edu.cn/joj/showproblem.php?pid=2179思路:n ^ k - 1 = (n - 1) * (n ^ (k - 1) + n ^ (k - 2) + ...... + n + 1);判断n ^ k - 1能否被(n - 1) ^ 2整除,只需判断后面那个式子被(n - 1)整除。那个式子mod(n - 1)为k,只要判断原创 2011-11-22 17:37:55 · 364 阅读 · 0 评论 -
JOJ2513:Distribute the cows
传送门:http://acm.jlu.edu.cn/joj/showproblem.php?pid=2513一道简单题,因为地下的概率和不是1,所以将所有概率加一起,用以前的M除以这个数就行了。代码:#include #include using namespace std;int main(){ int n, m; int Case = 0; whi原创 2011-11-23 14:30:14 · 288 阅读 · 0 评论 -
JOJ1600:Big Mod
传送门:http://acm.jlu.edu.cn/joj/showproblem.php?pid=1600思想:求幂的时候,每次乘法都取模,避免溢出,但如果用for循环会超时,所以要用二分的方法求幂。快速幂取模的核心代码:for (k = 1, a = a % m; p; p >>= 1, a = a * a % m) if (p & 1) k = k * a % m;原创 2011-11-23 14:45:39 · 342 阅读 · 0 评论 -
JOJ2236:Balance and Poise
传送门:http://acm.jlu.edu.cn/joj/showproblem.php?pid=2236思路:n只要能整除3就不断的除3,同时用sum累计除的那些3乘起来多少,这样保证n * sum是原始n,如果n不能整除3了分量中情况,1.余数是1,说明可以从其中拿走一个,所以右盘增加当前sum,n--;如果余数是2,所明需要补足一个,所以左盘增加当前sum,n++。代码:#原创 2011-11-23 21:25:23 · 365 阅读 · 0 评论 -
JOJ2252:Pick Balls
传送门:http://acm.jlu.edu.cn/joj/showproblem.php?pid=2252题目大意是说,给你M个球,第一次取1个,以后每次可取N,N/2,N*2个,其中N是上次取得个数。当上一次取得是1个的时候,本次不得不取,除非取球已完成。问最少多少次可取完。这是一道简单的数学题。首先检测最多一次能拿多少个。按等比数列增序累计。在考虑余下来的数要怎样拆分,才原创 2011-11-23 22:15:50 · 285 阅读 · 0 评论 -
JOJ1874:Relatives
传送门:http://acm.jlu.edu.cn/joj/showproblem.php?pid=1874求欧拉函数。分析:在数论,对正整数n,欧拉函数是少于或等于n的数中与n互质的数的数目。此函数以其首名研究者欧拉命名,它又称为Euler's totient function、φ函数、欧拉商数等。 例如φ(8)=4,因为1,3,5,7均和8互质。原创 2011-11-23 18:26:18 · 286 阅读 · 0 评论 -
JOJ1894:Ones
传送门:http://acm.jlu.edu.cn/joj/showproblem.php?pid=1894题意:输入个n,求能被n整除的数,且这个数要求是各个位置都是1并且最小。思路:一位一位递增,可能超过long long,所以每次求下余。代码:#include using namespace std;int main(){ int n; while (原创 2011-11-23 20:03:48 · 262 阅读 · 0 评论 -
JOJ2243:Endless Carry
传送门:http://acm.jlu.edu.cn/joj/showproblem.php?pid=2243很好的一道数学题,我们可以看出,二进制某一位上的1进位次数是2 ^ i - 1(i是1的位置),所以统计二进制数1的个数就行了。代码:#include using namespace std;int main(){ int n,ans; whil原创 2011-11-23 21:58:24 · 270 阅读 · 0 评论 -
2011 ACM/ICPC 北京赛区现场赛解题:Activation
ActivationTime Limit: 20000/10000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 238 Accepted Submission(s): 57Problem DescriptionAfter 4 years' w原创 2011-11-09 01:36:02 · 1755 阅读 · 4 评论 -
JOJ1716:Divisors
传送门:http://acm.jlu.edu.cn/joj/showproblem.php?pid=1716约数个数定理:设n的标准素数分解为 n = (a1 ^ p1) * (a2 ^ p2) * ...... * (am * pm),那么n的约数个数就是(p1 + 1) * (p2 + 1) * ...... * (p3 + 1)。这道题先预处理出36200以内素数,之后枚举l,u之间原创 2011-11-22 10:42:56 · 363 阅读 · 0 评论 -
JOJ1775:Factors and Factorials
传送门:http://acm.jlu.edu.cn/joj/showproblem.php?pid=1775题意:将一个数用素数个数的乘积表示出来。比如5!= 120 = (3 1 1 0 0......)这个是素数数组 (2 3 5 7 11.....)思路:预处理素数,之后从小到大每个素数的枚举,能整除就不断统计。代码:#include原创 2011-11-22 14:07:11 · 304 阅读 · 0 评论 -
JOJ1491:Biorhythms
传送门:http://acm.jlu.edu.cn/joj/showproblem.php?pid=1491一道中国剩余定理.....不懂的可以去百度一下。题意就是(n + d) % 23 = p; (n + d) % 28 = e; (n + d) % 33 = i;33 * 28 * 8 % 23 = 1;23 * 33 * 19 % 28 = 1;23 * 28 * 2原创 2011-11-21 16:11:44 · 277 阅读 · 0 评论 -
JOJ2026:Divide the Birthday Cake
On L.X.'s birthday, I bought her a big Birthday Cake, and she felt very happy."So how do you divide the cake?" I asked."I do not know. I do not want to simply divide it into several sectors. Hmn,原创 2011-11-16 10:50:51 · 562 阅读 · 0 评论 -
JOJ1595:Combinations(求解大组合数,Lucas定理)
题目传送门:http://acm.jlu.edu.cn/joj/showproblem.php?pid=1595大概意思很简单,就是求100以内组合数的解,这里顺便说说大组合数及其求余吧。关于Lucas定理及其推广可以去看陆师兄的BLOG -> 我是传送门这里就只放代码了#include #include #include typedef long long typec原创 2011-11-17 13:40:32 · 644 阅读 · 0 评论 -
nim游戏/sg函数(博弈论)
Nim游戏 Nim游戏是博弈论中最经典的模型(之一?),它又有着十分简单的规则和无比优美的结论 Nim游戏是组合游戏(Combinatorial Games)的一种,准确来说,属于“Impartial Combinatorial Games”(以下简称ICG)。满足以下条件的游戏是ICG(可能不太严谨):1、有两名选手;2、两名选手交替对游戏进行移动(move),每次一步,选手可以在(原创 2011-11-17 19:29:43 · 376 阅读 · 0 评论 -
JOJ2520:A special queen
传送门:http://acm.jlu.edu.cn/joj/showproblem.php?pid=2520&off=2500一道博弈论的题,两种方法:找规律或者直接SG。方法一:不难发现,G必输的位置是有规律的(1,2)、(3,5)、(4,7)、(6,10)......(对称位没有写),规律就是x和y的差值逐渐+1的,所以,我们先写出G必输位,之后看给出的棋盘规格的边缘上是否有必输点原创 2011-11-17 19:33:20 · 528 阅读 · 0 评论 -
JOJ1728:Power of Cryptography
传送门:http://acm.jlu.edu.cn/joj/showproblem.php?pid=1728&off=1700一道大数开方的题,乍一看貌似真的是大数开方,但是分析一下p的范围,10^101是在double范围内的,所以用double水过。至于大数开方的代码....我没写过....貌似得用牛顿迭代吧....不知道,有空研究下。代码:#include #include原创 2011-11-19 22:38:37 · 379 阅读 · 0 评论 -
JOJ1483:Exponentiation
传送门:http://acm.jlu.edu.cn/joj/showproblem.php?pid=1483大数幂算法,而且还带小数点了....求大数幂也就是循环N次的大数乘法,思想和加法一样,很容易想到。这道题的思路就是先把小数点去掉,用大数乘法思想去求幂,之后根据乘的次数求出小数点的位置,之后消去末尾零。具体不懂的参见代码:#include #include #incl原创 2011-11-19 22:09:44 · 291 阅读 · 0 评论 -
JOJ1267:Pascal's Triangle of Death
传送门:http://acm.jlu.edu.cn/joj/showproblem.php?pid=1267一道大数加法的题,Pascal三角就是中国的杨辉三角,每个位置的求法不用我说了,说一下大数加法的思想。C++中整数支持最高的数位是无符号的long long,也就是2^64,也就是18446744073709551616,这么小的数位完全不够10^60运算,所以要引入大数运算方法。原创 2011-11-19 21:52:45 · 505 阅读 · 0 评论 -
JOJ1920:Jojer
传送门:http://acm.jlu.edu.cn/joj/showproblem.php?pid=1920&off=1900大数加减乘除,总结了一个模板,把大数运算用类实现,详细代码吧。#include #include #include #include using namespace std;const int maxlen = 10000;class HP{原创 2011-11-19 23:46:45 · 360 阅读 · 0 评论 -
JOJ2573:Product of two primes
传送门:http://acm.jlu.edu.cn/joj/showproblem.php?pid=2573一道求素数的题,因为范围只有20000,可以先把20000以内的符合的预处理出来,预处理加点小技巧,详细见代码。代码:#include #include using namespace std;int prime[20000];int ans[20000];int原创 2011-11-20 19:15:57 · 346 阅读 · 0 评论 -
JOJ1148:Prime Cuts
传送门:http://acm.jlu.edu.cn/joj/showproblem.php?pid=1148求解素数的题,介绍下筛选法。1.开一个大的bool型数组prime[],大小就是n + 1就可以了,先把所有的下标为奇数的标为true,下标为偶数的标为false。2.然后,见代码: for(i=3;i<=tmp;i++) { if(prime[i])原创 2011-11-20 12:08:38 · 293 阅读 · 0 评论 -
母函数
网上找的一篇讲组合数学的文章,讲的很不错 先来说一说母函数,今天是第一次学。杭电关于母函数的PPT感觉不错,挺适合入门看看的。什么是母函数?对于序列a0,a1,a2,…构造一函数:G(x)=a0+a1*x+a2*x^2+...G(x)就是序列a0,a1...的母函数。如若已知序列a0,a1,a2,…则对应的母函数G(x)便可根据定义给出。 反之,如若已经求得序列的转载 2012-01-27 19:46:34 · 596 阅读 · 0 评论