- 博客(205)
- 资源 (2)
- 收藏
- 关注
原创 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 916
原创 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 4178
原创 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 2482
原创 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
原创 佩尔方程
参见:维基百科定义:若一个不定方程具有这样的形式:则称此二元二次不定方程为佩尔方程 若n是完全平方数,则这个方程式只有平凡解。解佩尔方程:若佩尔方程的最小特解(最小正整数解)是(x1,y1),那么可有迭代公式 。求出所有正整数解(xk,xk),用矩阵表示如下
2015-02-05 14:13:53 1449
原创 数论里面的定理
1.素数定理:记为小于等于的素数个数,那么有 题目:http://acm.nefu.edu.cn/JudgeOnline/problemshow.php?problem_id=1172.定理:设,,那么有 题目:http://acm.hdu.edu.cn/showproblem.php?pid=26853.定理:设,,那么4.定理:设,那么
2015-02-04 19:18:18 506
原创 中国剩余定理
参见:数论及应用(ACM-ICPC程序设计系列)定义:若m1,m2,m3,.....,mr 是两两互素的正整数,则同于方程组 x≡a1(mod m1); x≡a2(mod m2); …… x≡ar(mod mr);有模M=m1m2m3m4....mr的唯一解,即中国剩余定理。应用中国剩余定理解线
2015-02-04 14:42:36 532
原创 POJ Matrix Power Series (矩阵快速幂+二分)
题意:矩阵求和分析:如果用矩阵快速幂直接把每一项求出来相加会超时。可利用公式,使用二分快速求出 (1)当时,(2)当时,那么有 (3)当时,那么有 代码:#include #include using namespace std;struct Matrax{ int mat[100][100];}U,F;int N,M
2015-02-04 14:31:11 802
原创 解一元线性同余方程组
参见:维基百科线性同余方程组的求解可以分解为求若干个线性同余方程。比如,对于线性同余方程组:2x ≡ 2 (mod 6)3x ≡ 2 (mod 7)2x ≡ 4 (mod 8)首先求解第一个方程,得到x ≡ 1 (mod 3),于是令x = 3k + 1,第二个方程就变为:9k ≡ −1 (mod 7)解得k ≡ 3 (mod 7)。于是,再令k = 7l + 3,第三个方
2015-02-03 14:26:09 1703
原创 POJ 1061青蛙的约会 (扩展欧几里德)
题意:中文- -分析:设青蛙A和青蛙B跳了s步,可列出方程x+ms-Lk=y+ns,变形得(n-m)s+Lk=x-y,当(X-Y)不能整除gcd(n-m,L)时,方程无解。利用扩展欧几里德求出(n-m)s+Lk=gcd(n-m,L)的一个解s'。s'=s'*((x-y)/gcd(n-m,L)),此时的s'为原方程(n-m)s+Lk=x-y的一个特解,再求出最小解就行了。代码:#in
2015-01-31 16:21:48 501
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人