- 博客(46)
- 资源 (2)
- 收藏
- 关注
原创 POJ 2409 Let it Bead (polya计数)
题目:http://poj.org/problem?id=2409题意:用m种颜色给n个珠子染色,能染出多少种项链。如果旋转或翻转转后与之前的项链一模一样,那么这种染色方案不算。分析:直接用polya定理解决。先考虑旋转置换,将项链顺时针旋转i个珠子,那么循环节数为gcd(n,i)。再考虑翻转置换,当n为奇数时,有n个循环节数为(n+1)/2的循环群,当n为偶数时,有n/2个循环节数为(n
2015-02-27 21:43:29 493
原创 Cantor expansion(康托展开)
定义: 将一个整数X展开为如下形式: X=a[n]*(n-1)!+a[n-1]*(n-2)!+...+a[i]*(i-1)!+...+a[2]*1!+a[1]*0! (其中,a为整数,并且0全排列的编码: {1,2,3,4,...,n}的排列总共有n!种,将它们从小到大排序,怎样知道其中一种排列是有序序列中的第几个?
2015-02-24 19:51:40 1144
原创 Catalan(卡特兰)数
定义:令h(1)=1,h(0)=1,Catalan数满足递归式 h(n)=h(0)*h(n-1)+h(1)*h(n-2)+.....+h(n-1)*h(0) (h≥2)另类递归式: h(n)=((4*n-2)/(n+1))*h(n-1)该递归关系的解为 h(n)=C(2n,n)/(n+1) (n=1,2,3,4.....)
2015-02-24 14:56:10 1036
原创 POJ 2661 Factstone Benchmark (斯特灵公式)
题目:http://poj.org/problem?id=2661题意:1960年计算机是4bit,1970年更新为8bit,1980年更新为16bit,以后每十年更新一次(翻一倍),给你一个年份n(1960分析:数据范围比较小,算出21个数即可。直接算阶乘等了几分钟还有4个数没出完。利用斯特灵公式算阶乘,打表。斯特灵公式是一条用来取n阶乘近似值的数学公式。一般来说,当n很
2015-02-24 14:21:07 560
原创 HDU 1799 循环多少次?(位与杨辉三角)
题目:http://acm.hdu.edu.cn/showproblem.php?pid=1799题意:给你一个迭代的for循环, 求循环次数。分析:之前就看到这个题,一直没思路,昨天看了一下容斥原理,突然有了思路。。。。。容斥原理公式 : 输入的m,n,其实就是从n个不同元素元素里面选m个元素,就是求C(n,m)。
2015-02-22 21:06:15 492
原创 HDU 1757 A Simple Math Problem (矩阵+快速幂)
题目:http://acm.hdu.edu.cn/showproblem.php?pid=1757题意:已知当n分析:矩阵快速幂.....和nyoj 301题递推求值差不多,构造矩阵即可。http://blog.csdn.net/w20810/article/details/43835393代码:#include #include using namespace std;
2015-02-22 18:05:24 482
原创 莫比乌斯反演
关于莫比乌斯反演的资料:莫比乌斯反演入门--qw4990莫比乌斯反演-ACdreamers又见莫比乌斯反演-ACdreamers莫比乌斯反演学习小记-pi9nc莫比乌斯和容斥-将狼踩尽 19891101
2015-02-22 14:59:52 576
原创 HDU 1796 How many integers can you find (容斥原理)
题目:http://acm.hdu.edu.cn/showproblem.php?pid=1796题意:给你两个数n(n分析:先不考虑重叠的部分,把小于n,且能整除a1的数的个数求出来,即(n-1)/a1,同理,求出a2,a3.....am的。然后把个数加起来,再减去重叠部分的个数就行了。这里给出容斥原理公式:
2015-02-21 18:08:04 490
原创 nyoj 954 N!(基本算式定理)
题目:http://acm.nyist.net/JudgeOnline/problem.php?pid=954题意:求N!的二进制表示最低位的1的位置(从右向左数)。(N分析:一个数乘上一个2就会向右移一位,最低位添上一个0。那么问题就转化为求出N!的因子有多少个2。而n! 的素因子分解中的素数p的指数(幂)为【n/p】+【n/p^2】+【n/p^3】+.......http://bl
2015-02-21 14:54:39 612
原创 指数型母函数
n个元素组成的多重集合,其中a1重复了n1次,a2重复了n2次,....,ak重复了nk次,n=n1+n2+n3+....+nk,从n个元素中取r个排列,求不同的排列数。若r=n,即考虑n个元素的全排列,则不同的排列数为。但是对于一般的r,就要用到指数型母函了。展开后,母函数的指数代表所选元素的个数,ai代表排列数。
2015-02-20 20:17:10 647
原创 POJ 2773 Happy 2006 (容斥原理+二分)
题目:http://poj.org/problem?id=2773 和 http://acm.nyist.net/JudgeOnline/problem.php?pid=762题意:求与n的互质的第k个数(互素的数从1递增),第k个数可能比n大。分析:这里介绍两种方法,但nyoj上面的数据比poj强,只有第二种在nyoj上面能AC。方法一:与n互质的数的增量有成倍关系,比如在1
2015-02-20 14:32:40 496
原创 nyoj 471 好多树 (欧拉函数+容斥定理)
题目:http://acm.nyist.net/JudgeOnline/problem.php?pid=471题意:poj 3090的升级版http://blog.csdn.net/w20810/article/details/43701879只不过给你的不是正方形,而是x*y的矩阵,也是求可见点的个数。 分析:设xy。代码:#in
2015-02-19 16:33:43 522
转载 求1~r内有多少个数与n互素
文章转自:http://blog.csdn.net/acdreamers/article/details/9721139问题:求1~r中有多少个数与n互素。对于这个问题由容斥原理,我们有3种写法,其实效率差不多。分别是:dfs,队列数组,位运算。位运算:用二进制1,0来表示第几个素因子是否被用到,如m=3,三个因子是2,3,5,则i=3时二进制是
2015-02-19 16:29:20 917
原创 POJ 2142 The Balance (扩展欧几里德)
题目:http://poj.org/problem?id=2142题意:给你3个数a,b,m,其中a,b代表两种砝码的权值,m代表要称量的物品的重量。两种砝码分别用x,y个称出物品的重量,使得x+y最小,若有几种解,取ax+by最小的那组解。分析:http://blog.csdn.net/w20810/article/details/43269303用扩展欧几里德求出特解(x0,y0)
2015-02-19 12:55:34 444
原创 HDU 1028 Ignatius and the Princess III(母函数)
题目:http://acm.hdu.edu.cn/showproblem.php?pid=1028题意:给定一个数n,将n拆分成一个或几个不大于n的正整数。是这些正整数的和等于n。求出方案数。分析:构造母函数G(x)=(1+x+x^2+...+x^n)(1+x^2+x^4+...+x^[(n/2)*2])(1+x^3+x^6+...+x^[(n/3)*3])......(1+x^n),
2015-02-16 20:34:21 377
原创 HDU 2082 找单词 (母函数)
题目:http://acm.hdu.edu.cn/showproblem.php?pid=2082题意:已知有26种数字(1,2,3,4......26),然后输入26个数(m1,m2,m3,....m26),分别代表每个数字的个数,求出总值不超过50的方案数。分析:由于每种数字各选多少个互不影响。 对于数字1,有m1个,用多项式(1+x+x^2+x^3+....+
2015-02-16 19:53:32 431
原创 nyoj 461Fibonacci数列(四)(log10()函数)
题目:http://acm.nyist.net/JudgeOnline/problem.php?pid=461题意:给你一个n,求出Fibonacci数列中的F(n)的前4位,不足4位的全部输出。分析:化简log10(fibonacci数列通项公式)http://blog.csdn.net/w20810/article/details/43836997 代码:#inc
2015-02-16 14:03:17 474
原创 Fibonacci数列
定义:斐波那契数列指的是这样一个数列0,1,1,2,3,5,8,13,21,34,55,89,144,233,377,610,987,1597,2584,4181,6765,10946,17711,28657,46368....特别指出:第0项是0,第1项是第一个1。递推公式:F(n)=F(n-1)+F(n-2)通项公式:特性: 1. 平方
2015-02-15 19:44:44 829
原创 UVA 11029 Leading and Trailing (log10()函数+快速幂)
题目:http://uva.onlinejudge.org/external/110/11029.pdf题意:给出n和k,计算n^k的前三位和后三位数字。0分析:令x=log10(n^k),变形有x=k*log10(n),那么x的值为p0.p1p2p3p4p5........,其中p0+1就是n^k的位数,n^k=(10^p0)*(10^0.p1p2p3p4p5.....),只需计算10^
2015-02-15 17:29:32 441
原创 UVA 11121 Base -2 (进制转换)
题目:http://uva.onlinejudge.org/external/111/11121.pdf题意:给你一个数n,将n转换成-2进制。分析:代码:#include #include #include #include using namespace std;int main(){ stack st; int ncase; int x,i,r,t;
2015-02-13 19:56:44 519
原创 进制转换
-2进制:用-2作为基数,(-2)^n作为权值来表示一个数。例如,7=1*(-2)^0+1*(-2)^1+0*(-2)^2+1*(-2)^3+1*(-2)^4,所以7用-2进制表示为11011。将n转换乘x进制代码:#include #include #include using namespace std;int main(){ int n,x; //将n转
2015-02-13 19:49:43 426
原创 UVA 10229 Modular Fibonacci (矩阵乘法+快速幂)
题目:http://uva.onlinejudge.org/external/102/10229.pdf题意:给你n和m,求出Fibonacci数列的第n项F(n)模2^m。分析:由于n代码:#include #include #include using namespace std;struct Matrax{ long long mat[2][2];}U,F;
2015-02-13 14:42:03 445
原创 UVA 10006 Carmichael Numbers (伪素数)
题目:http://uva.onlinejudge.org/external/100/10006.pdf题意:判断是否为卡迈卡尔数(伪素数)。分析:http://blog.csdn.net/w20810/article/details/43603799 先判断n是否为素数,若是,肯定不是伪素数。若不是,枚举a:2~n-1,利用费马小定理:若n是素数,则a^n≡a(mod n),对于所有
2015-02-13 13:49:47 517
原创 因子和因子个数
所有因子个数τ(n)与所有因子的和σ(n)都是乘(积)性函数。定义1:因子和函数σ定义为整数n的所有正因子之和,记为σ(n)。定义2:因子个数函数τ定义为正整数n的所有正因子个数,记为τ(n)。定理1:设p是一个素数,a是
2015-02-10 13:34:27 4179
原创 POJ 3090 Visible Lattice Points (欧拉函数)
题目:http://poj.org/problem?id=3090题意:在平面直角坐标系中,从(0,0)到(x,y)画一条线段,其中x>=0,y>=0。若这条线段上面没有其他的点,说明点(x,y)是可见的。求可见点的个数。 (0,0)分析:列出点(x0,y0)到(0,0)的直线方程y=(y0/x0)*x,很容易想到就是求互质点的个数。
2015-02-10 13:04:16 539
原创 POJ 1284 Primitive Roots(原根个数与欧拉函数)
题目:http://poj.org/problem?id=1284题意:一个整数x(0例如,3的连续的次幂对7取模的结果是3,2,,64,,5,1,所以3是7的一个原根。给出一个奇素数p{3分析:有这样一个结论:p是素数,则p有φ(p-1)个原根。。。。。。。。。打个欧拉函数表~代码:#include #include using namespace std;#defin
2015-02-10 11:53:02 524
原创 欧拉函数
定理1:如果f是一个乘(积)性函数,对任意正整数n有素数幂分解,那么 。定理2:如果p是素数,那么φ(p)=p-1;反之,如果p是一个正整数且满足φ(p)=p-1,那么p是素数。定理3:设p是素数,a是一个正整数,那么φ(p^a)=(p^a)-(p^(a-1));定理4:设m,n是互素的正整数,那么φ(n*m)=φ(n) * φ(m)。(即欧拉函数是积性
2015-02-09 20:48:30 469
原创 POJ 1811 Prime Test (miller_rabin + pollard_rho)
题目:http://poj.org/problem?id=1811题意:判断一个数N(2 54)是否为素数,若为素数输出“Prime”,否则输出最小的素因子分析:先用miller_rabin随机算法判断N是否为素数,若是合数,用pollard_rho算法进行整数分解。代码:#include #include #include #include using namespace
2015-02-09 20:00:04 506
原创 Pollard rho整数分解法
首先说一下对不是很大的整数n的拆分,首先将2~sqrt(n)的所有素数打表,然后对应素数表一一试除,试除后,如果n>1,此时n也是素因子。题目:http://acm.hdu.edu.cn/showproblem.php?pid=1164代码:#include #include #include #include using namespace std;const int
2015-02-08 17:08:56 614
原创 素数判定总结
1.对于百万级别,判断单个数是否为素数,用埃拉托斯尼斯筛法打一个判断是否为素数的表预处理一下。代码:const int N=2000000;bool isprime[N];void doprime(){ long long i,j; for(i=1;i<N;i+=2) isprime[i]=true; isprime[1]=false; isprime[2]=true
2015-02-08 16:11:36 483
原创 改进Miller_rabin素数测试
定义:一个合数n,若对所有满足gcd(a,n)=1的正整数a都有a^(n-1)≡1(mod n)成立,则称之为卡迈克尔数。二次探测定理:如果p是一个素数,且0 那么可以根据二次探测定理,在利用费马小定理计算a^(n-1)%n的过程中增加对整数n的二次探测,一旦发现违背二次探测条件,即得出n不是素数的结论。代码:#include #include
2015-02-08 15:23:27 476
原创 POJ 3641 Pseudoprime numbers (miller_rabin)
题意:输入p,a,若p是以a为底的伪素数输出“yes”,否则输出“no”。http://blog.csdn.net/w20810/article/details/43603799 题目比较水,但是有个坑还是一直不明白。打个1~40 000的素数表完全可以判断1~1 000 000 000以内的输入的p是否为素数,一直RE。没用素数表,直接在2~sqrt(p)判断就AC了。代码:
2015-02-08 13:59:29 367
原创 Miller-Rabin素数测试
由费马小定理可知,若n为素数,且a是整数,则满足a^n≡a(mod n)。若存在正整数a不满足a^n≡a(mod n),那么n是合数。定义:令a是一正整数,若n是合数且满足a^n≡a(mod n),则n称为以a为基的伪素数。算法原理:Miller-Rabin素数测试算法基于费马小定理:假如n是素数,且gcd(a,n)=1,那么a^(n-1)≡1(mod n)。如果a^(n-
2015-02-07 16:30:34 714
原创 同余式定理
定理1(威尔逊定理):若p是素数,(p-1)!≡-1(mod p)。定理2(费马小定理):假如p是素数,且gcd(a,p)=1,那么a^(p-1)≡p(mod p)。定理3:若p是素数且a是正整数,那么a^p≡a(mod p)。多面体欧拉定理:在一凸多面体中,顶点数-棱边数+面数=2。欧拉函数的定义:设n是一个正整数,欧拉函数φ(n)定义为不超过n且
2015-02-07 14:32:03 803
原创 n元一次不定方程
定理:n元一次不定方程x1a1+x2a2+....+xnan=c(所有系数为整数),有解的充分必要条件是gcd(a1,a2,.....,an)|c。求n元一次不定方程的解:解n元一次不定方程时,可先顺次求出gcd(a1,a2)=d2,gcd(d2,a3)=d3,gcd(d3,a4)=d4,......若dn|c,则方程有解。作方程组
2015-02-06 17:29:26 2483
原创 POJ 1305 Fermat vs. Pythagoras (本原毕达哥拉斯三元组)
题意:输入n,求n范围内(x,y,z分析:http://blog.csdn.net/w20810/article/details/43564495 枚举m,n求出本原本原毕达哥拉斯三元组(a,b,c),然后将三元组(a,b,c)乘以i(保证i*a)代码:#include #include #include using namespace std;bool
2015-02-06 17:08:55 689
原创 FZU 1669 Right-angled Triangle (本原毕达哥拉斯三元组)
题目:题意:求满足以a,b为直角边,c为斜边,且满足a+b+c分析:http://blog.csdn.net/w20810/article/details/43564495 枚举m,n求出本原本原毕达哥拉斯三元组(a,b,c),然后将三元组(a,b,c)乘以i(保证i*(a+b+c))代码:#include #include #include us
2015-02-06 16:16:33 531
原创 毕达哥拉斯三元组及本原毕达哥拉斯三元组
毕达哥拉斯定理:勾股定理又称商高定理、毕达哥拉斯定理,是平面几何中一个基本而重要的定理。勾股定理说明,平面上的直角三角形的两条直角边的长度(古称勾长、股长)的平方和等于斜边长(古称弦长)的平方。反之,若平面上三角形中两边长的平方和等于第三边边长的平方,则它是直角三角形(直角所对的边是第三边)。毕达哥拉斯三元组:有正整数三元组x,y,z,满足x^2+y^2=z^2,这样的三元组被称为毕达哥拉
2015-02-06 14:54:05 2341
原创 HDU 3292 No more tricks, Mr Nanguo(佩尔方程)
题意:输入N,K,求方程x^2+N*(y^2)=1的第K大解,结果MOD8191分析:利用公式,然后直接矩阵快速幂。 http://blog.csdn.net/w20810/article/details/43527357代码:#include #include #include using namespace std;#define M 8191
2015-02-06 14:06:10 452
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人