自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

w20810的专栏

人若无名,方可专心练剑

  • 博客(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 482

原创 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 583

原创 指数型母函数

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 640

原创 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 484

原创 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 504

转载 求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 874

原创 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 435

原创 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 370

原创 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 421

原创 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 462

原创 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 763

原创 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 431

原创 nyoj 301递推求值 (矩阵+快速幂)

题目:题意:分析:

2015-02-15 15:15:45 570

原创 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 498

原创 进制转换

-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 392

原创 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 432

原创 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 499

原创 因子和因子个数

所有因子个数τ(n)与所有因子的和σ(n)都是乘(积)性函数。定义1:因子和函数σ定义为整数n的所有正因子之和,记为σ(n)。定义2:因子个数函数τ定义为正整数n的所有正因子个数,记为τ(n)。定理1:设p是一个素数,a是

2015-02-10 13:34:27 3910

原创 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 505

原创 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 511

原创 欧拉函数

定理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 441

原创 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 490

原创 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 594

原创 素数判定总结

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 471

原创 改进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 466

原创 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 354

原创 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 680

原创 同余式定理

定理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 785

原创 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 2416

原创 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 678

原创 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 521

原创 毕达哥拉斯三元组及本原毕达哥拉斯三元组

毕达哥拉斯定理:勾股定理又称商高定理、毕达哥拉斯定理,是平面几何中一个基本而重要的定理。勾股定理说明,平面上的直角三角形的两条直角边的长度(古称勾长、股长)的平方和等于斜边长(古称弦长)的平方。反之,若平面上三角形中两边长的平方和等于第三边边长的平方,则它是直角三角形(直角所对的边是第三边)。毕达哥拉斯三元组:有正整数三元组x,y,z,满足x^2+y^2=z^2,这样的三元组被称为毕达哥拉

2015-02-06 14:54:05 2239

原创 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 438

原创 佩尔方程

参见:维基百科定义:若一个不定方程具有这样的形式:则称此二元二次不定方程为佩尔方程           若n是完全平方数,则这个方程式只有平凡解。解佩尔方程:若佩尔方程的最小特解(最小正整数解)是(x1,y1),那么可有迭代公式                                。求出所有正整数解(xk,xk),用矩阵表示如下

2015-02-05 14:13:53 1332

原创 数论里面的定理

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 488

原创 中国剩余定理

参见:数论及应用(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 524

原创 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 786

原创 等比数列求和

快速求出      (1)当时,(2)当时,那么有    (3)当时,那么有

2015-02-03 21:36:01 636

原创 解一元线性同余方程组

参见:维基百科线性同余方程组的求解可以分解为求若干个线性同余方程。比如,对于线性同余方程组: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 1613

原创 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 489

2010~2014湖南省程序设计竞赛题目+数据+标程

此压缩包包含2010~2014年湖南省程序设计竞赛的题目和数据以及标程。赛前练一练,对比赛有帮助。

2015-12-13

程序设计导引及在线实践

本书是一本与众不同的程序设计入门教材,实践性以一种特殊的方式被提高到了十分重要的地位,不论对计算机专业的学生,还是非计算机专业的学生,都非常适用。 目前许多程序设计入门教材的主要内容就是详细介绍一门程序设计语言。对于计算机专业的学生,这远远不够;对于非计算机专业的学生,也略显肤浅。许多大学的本科计算机专业程序设计课程的教法,重语法规则,缺算法概念,这就容易导致学生由于基本技能缺失而在学习数据结构时产生困难,或难以学精。对于非计算机专业的学生来说,仅掌握一门程序设计语言的语法规则,写几个打印由星号组成的三角形之类的“玩具”程序,而对计算机科学的基础与灵魂 -- 算法一无所知,不明白计算机到底是怎么解决问题的,那么在日后的工作中,不但不可能自己编写实用程序,甚至会无法敏感地及时意识到,哪些问题很适合用计算机处理,可以交给计算机专业人员来做。本书将程序设计语言和最基本的算法思想相结合,是避免上述现象的一个有益尝试。

2015-01-13

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除