ACM-ICPC培训资料汇编6数论组合数学分册版本号100_精品文档.pdf

上传人:b****2 文档编号:3212615 上传时间:2022-11-20 格式:PDF 页数:59 大小:693.96KB
下载 相关 举报
ACM-ICPC培训资料汇编6数论组合数学分册版本号100_精品文档.pdf_第1页
第1页 / 共59页
ACM-ICPC培训资料汇编6数论组合数学分册版本号100_精品文档.pdf_第2页
第2页 / 共59页
ACM-ICPC培训资料汇编6数论组合数学分册版本号100_精品文档.pdf_第3页
第3页 / 共59页
ACM-ICPC培训资料汇编6数论组合数学分册版本号100_精品文档.pdf_第4页
第4页 / 共59页
ACM-ICPC培训资料汇编6数论组合数学分册版本号100_精品文档.pdf_第5页
第5页 / 共59页
点击查看更多>>
下载资源
资源描述

ACM-ICPC培训资料汇编6数论组合数学分册版本号100_精品文档.pdf

《ACM-ICPC培训资料汇编6数论组合数学分册版本号100_精品文档.pdf》由会员分享,可在线阅读,更多相关《ACM-ICPC培训资料汇编6数论组合数学分册版本号100_精品文档.pdf(59页珍藏版)》请在冰豆网上搜索。

ACM-ICPC培训资料汇编6数论组合数学分册版本号100_精品文档.pdf

ACM-ICPC培训资料汇编培训资料汇编(6)数论、组合数学分册数论、组合数学分册(版本号(版本号1.0.0)哈尔滨理工大学哈尔滨理工大学ACM-ICPC集训队集训队2012年年12月月哈尔滨理工大学ACM-ICPC培训资料汇编序序2012年5月,哈尔滨理工大学承办了ACM-ICPC黑龙江省第七届大学生程序设计竞赛。

做为本次竞赛的主要组织者,我还是很在意本校学生是否能在此次竞赛中取得较好成绩,毕竟这也是学校的脸面。

因此,当2011年10月确定学校承办本届竞赛后,我就给齐达拉图同学很大压力,希望他能认真训练参赛学生,严格要求受训队员。

当然,齐达拉图同学半年多的工作还是很有成效,不仅带着黄李龙、姜喜鹏、程宪庆、卢俊达等队员开发了我校的OJ主站和竞赛现场版OJ,还集体带出了几个比较像样的新队员,使得今年省赛我校取得了很好的成绩(当然,也承蒙哈工大和哈工程关照,没有派出全部大牛来参赛)。

在2011年9月之前,我对ACM-ICPC关心甚少。

但是,我注意到我校队员学习、训练没有统一的资料,也没有按照竞赛所需知识体系全面系统培训新队员。

2011-2012年度的学生教练们做了一个较详细的培训计划,每周都会给2011级新队员上课,也会对老队员进行训练,辛辛苦苦忙活了一年但是这些知识是根据他们个人所掌握情况来给新生讲解的,新生也是杂七杂八看些资料和做题。

在培训的规范性上欠缺很多,当然这个责任不在学生教练。

2011年9月,我曾给老队员提出编写培训资料这个任务,一是老队员人数少,有的还要去百度等企业实习;二是老队员要开发、改造OJ;三是培训新队员也很耗费精力,因此这项工作虽很重要,但却不是那时最迫切的事情,只好被搁置下来。

2012年8月底,2012级新生满怀梦想和憧憬来到学校,部分同学也被ACM-ICPC深深吸引。

面对这个新群体的培训,如何提高效率和质量这个老问题又浮现出来。

市面现在已经有了各种各样的ACM-ICPC培训教材,主要算法和解题思路都有了广泛深入的分析和讨论。

同时,互联网博客、BBS等中也隐藏着诸多大牛对某些算法的精彩论述和参赛感悟。

我想,做一个资料汇编,采撷各家言论之精要,对新生学习应该会有较大帮助,至少一可以减少他们上网盲目搜索的时间,二可以给他们构造一个相对完整的知识体系。

感谢ACM-ICPC先辈们作出的杰出工作和贡献,使得我们这些后继者们可以站在巨人的肩膀上前行。

感谢校集训队各位队员的无私、真诚和抱负的崇高使命感、责任感,能够任劳任怨、以苦为乐的做好这件我校的开创性工作。

唐远新2012年10月哈尔滨理工大学ACM-ICPC培训资料汇编编写说明编写说明本资料为哈尔滨理工大学ACM-ICPC集训队自编自用的内部资料,不作为商业销售目的,也不用于商业培训,因此请各参与学习的同学不要外传。

本分册大纲由黄李龙编写,内容由曹振海、陈禹等分别编写和校核。

本分册内容大部分采编自各OJ、互联网和部分书籍。

在此,对所有引用文献和试题的原作者表示诚挚的谢意!

由于时间仓促,本资料难免存在表述不当和错误之处,格式也不是很规范,请各位同学对发现的错误或不当之处向邮箱反馈,以便尽快完善本文档。

在此对各位同学的积极参与表示感谢!

哈尔滨理工大学在线评测系统(Hrbust-OJ)网址:

http:

/,欢迎各位同学积极参与AC。

国内部分知名OJ:

杭州电子科技大学:

http:

/北京大学:

http:

/poj.org浙江大学:

http:

/以下百度空间列出了比较全的国内外知名OJ:

http:

/哈尔滨理工大学ACM-ICPC集训队2012年12月哈尔滨理工大学ACM-ICPC培训资料汇编-III-目目录录序.I编写说明.II第6章数论.66.1欧几里德算法.66.1.1基本原理.66.1.2解题思路.66.1.3模板代码.66.1.4经典题目.66.2扩展欧几里德算法.86.2.1基本原理.86.2.2解题思路.86.2.3模板代码.86.2.4经典题目.96.2.5扩展变型.126.3筛素数.126.3.1基本原理.126.3.2解题思路.126.3.3模板代码.126.3.4经典题目.136.4模线性方程.146.4.1基本原理.156.4.2解题思路.156.4.3模板代码.156.4.4经典题目.156.4.5扩展变型.166.5求解线性同余方程组.166.5.1基本原理.166.5.2解题思路.176.5.3模板代码.176.5.4经典题目.176.5.5扩展变型.196.6随机素数测试(Miller-Rabin).196.6.1基本原理.196.6.2解题思路.196.6.3模板代码.196.6.4经典题目.206.7素因子快速分解.216.7.1基本原理.216.7.2解题思路.216.7.3模板代码.216.7.4经典题目.226.7.5扩展变型.24哈尔滨理工大学ACM-ICPC培训资料汇编-IV-6.8整数因子分解算法(Pollard-Rho).246.8.1基本原理.246.8.2解题思路.246.8.3模板代码.256.8.4经典题目.256.8.5扩展变型.286.9欧拉函数.286.9.1基本原理.286.9.2解题思路.286.9.3模板代码.286.9.4经典题目.286.9.5扩展变型.296.10高斯消元.296.10.1基本原理.296.10.2解题思路.296.10.3模板代码.296.10.4经典题目.326.10.5扩展变型.36第7章组合数学.377.1母函数.377.1.1基本原理.377.1.2解题思路.377.1.3模板代码.387.1.4经典题目.387.1.5扩展变型.397.2置换群.397.2.1基本原理.397.2.2解题思路.407.2.3模板代码.407.2.4经典题目.407.2.5扩展变型.427.3排列组合.427.3.1基本原理.427.3.2解题思路.437.3.3模板代码.437.3.4经典题目.437.4卡塔兰数(Catalan).457.4.1基本原理.457.4.2解题思路.457.4.3模板代码.467.4.4经典题目.467.5容斥原理.477.5.1基本原理.477.5.2解题思路.477.5.3模板代码.47哈尔滨理工大学ACM-ICPC培训资料汇编-V-7.5.4经典题目.477.6Burnside定理.507.6.1基本原理.507.6.2解题思路.517.6.3模板代码.517.6.4经典题目.527.7Polya计数.557.7.1基本原理.557.7.2解题思路.557.7.3模板代码.557.7.4经典题目.55哈尔滨理工大学ACM-ICPC培训资料汇编-6-第6章数论6.1欧几里德算法参考文献:

参考文献:

ACMICPC程序设计系列程序设计系列哈尔滨工业大学出版社哈尔滨工业大学出版社初等数论第二版(潘承洞,潘承彪著)北京大学出版社初等数论第二版(潘承洞,潘承彪著)北京大学出版社最大公约数最大公约数-百度百科百度百科扩展阅读:

扩展阅读:

编写:

曹振海编写:

曹振海校核:

陈禹校核:

陈禹6.1.1基本原理欧几里得算法又称为辗转相除法,设两个数a,b则a,b的最大公约gcd(a,b)=gcd(b,a%b)不妨设a=b,c=gcd(a,b),a=kc,b=jc,则k,j互素(否则c不是a,b的最大公约数),则设r=a%b则a=mb+r,则r=a-mb=kc-mjc=(k-mj)c,因为k,j互素,则k-mj与j互素gcd(a,b)=gcd(b,a%b)6.1.2解题思路一般很少有题目只要求最大公约数,但是通常很多题会用到求最大公约数的过程,比如判断两个数是否互素(最大公约数为1),这个时候欧几里得算法暨辗转相除法就变成了很得力的工具,因为每一步都是取模,保证了数据减小的速度特别快。

能够在很短的时间内求出两个数的最大公约数。

6.1.3模板代码/非递归版,C语言实现intgcd(inta,intb)if(!

a)returnb;intc;while(b)c=b;b=a%b;a=c;returna;/递归版,C语言实现intgcd(inta,intb)if(b=0)returna;returngcd(b,a%b);6.1.4经典题目6.1.4.1题目题目11题目出处/来源哈理工OJ-1328相等的最小公倍数2题目描述定义An为1,2,n的最小公倍数,例如,A1=1,A2=2,A3=6,A4=12,A5=60,A6=60。

请你判断对于给出的任意整数n,An是否等于An1。

哈尔滨理工大学ACM-ICPC培训资料汇编-7-如果An等于An-1则输出YES否则输出NO。

3分析由最小公倍数的定义我们可以知道,如果An=An-1则An-1可以被n整除,首先,对于一个数n如果是素数,那么An不等于An-1,其次,我们分析n,如果对于小于n的每一对因子即n=a*b(an且b1,则lcm(a,b)=n/gcd(a,b)n(lcm表示最小公倍数),那么很显然,如果n的每一对因子都是不互素的,则n不能整除An-1,否则可以整除An-1,因为n的因子肯定小于等于n-1,所以其每一对因子的最小公倍数肯定可以整除An-1,所以这道题就0变成了判断n是否有互素的一对因子,所以我们只要枚举n的每一对因子,然后计算其最大公约数是否为1,如果有一对互素的因子则输出YES,否则输出NO4代码(包含必要注释,采用最适宜阅读的CourierNew字体,小五号,间距为固定值12磅)#include#include#includeintgcd(inta,intb)/求最大公约数部分if(b=0)returna;returngcd(b,a%b);intmain()intn;intt;inti,j;scanf(%d,&t);while(t-)boolp=true;scanf(%d,&n);if(n=2)/特殊情况的判断printf(NOn);continue;inttemp=(int)sqrt(double)n);for(i=2;i=temp;i+)/判断n是否是素数if(n%i=0)break;if(i=temp+1)/是素数直接输出NOprintf(NOn);continue;for(i=2;i=b,为什么?

6.2扩展欧几里德算法参考文献:

参考文献:

扩展欧几里得扩展欧几里得-百度百科百度百科扩展欧几里得解线性方程扩展欧几里得解线性方程扩展阅读:

扩展阅读:

编写:

曹振海编写:

曹振海校核:

陈禹校核:

陈禹6.2.1基本原理设a和b不全为0,则存在整数x,y使得gcd(a,b)=xa+yb对于辗转相除法的最后一项此时b=0,则gcd(a,b)=1*a+0*b,因为gcd(a,b)=gcd(b,a%b)则有x*a+y*b=x1*b+y1*(a%b)将等式右边变形,b*x1+(a%b)*y1=b*x1+(a-(a/b)*b)*y1=a*y1+b*(x1-(a/b)*y1)则,x=y1,y=x1-(a/b)*y1则可由后向前迭代得到x,y6.2.2解题思路对于扩展

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 农林牧渔 > 畜牧兽医

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1