导航

2016年1月26日

摘要: 2016.1.26试题描述给定两个正整数 a 和 b,请你统计区间 [a,b) 内有多少个素数。输入共一行包含两个正整数a和b,用一个空格分隔开。输出一个数,表示所给区间内的素数的个数。输入示例2237输出示例3其他说明数据范围:1≤a#includeusing namespace std;long... 阅读全文

posted @ 2016-01-26 09:14 POOH1DROSE 阅读(1162) 评论(0) 推荐(0) 编辑

摘要: 2016.1.26主体思想与前面两种筛法一致,但一般题目中数据范围比较大(a<b<=10^12),但也有个利于我们的限制条件(b-a<=10^6)那就很简单了,根据我们熟知的理论,b以内的合数的最小质因数不会大于√b,所以我们就可以筛出[1,√b]内的素数并用这些素数去筛除[a,b]的合数。典型例题... 阅读全文

posted @ 2016-01-26 09:13 POOH1DROSE 阅读(509) 评论(0) 推荐(0) 编辑

2016年1月25日

摘要: 2016.1.25学习完了伪线性的埃式筛法,我们来学习一个真线性的线性筛法。时间复杂度:O(n)(即每个合数只会被筛一遍)操作:每当我们在外循环(外循环与埃式筛法相同)遇到一个素数时,我们将所有已筛得的素数(包括该素数)分别与该素数的乘积筛去;每当我们遇到一个合数时,则该合数可以表示为A=p1*p2... 阅读全文

posted @ 2016-01-25 22:36 POOH1DROSE 阅读(284) 评论(0) 推荐(0) 编辑

摘要: 2016.1.25我们都知道,判断一个数是否为素数可以在O(√n)的时间复杂度内解决。但是如果是要求[1,n]内素数的个数,显然一个一个判断有些慢了。但我们知道一个显而易见的性质:一个合数的所有质因数都小于这个合数,一个质数没有比它小的质因数。那么我们可以利用已求得的质因数,来对比他大的合数进行筛除... 阅读全文

posted @ 2016-01-25 22:21 POOH1DROSE 阅读(971) 评论(0) 推荐(0) 编辑

摘要: 2016.1.25试题描述给定平面上的两个格点P1=(x1,y1)和P2=(x2,y2),线段P1P2上,除了P1和P2以外一共有多少个格点?输入一行包括四个数,分别为x1,x2,y1和y2,两两之间用一个空格分隔。输出输出一个数,表示题目描述的格点的个数。输入示例15113输出示例3其他说明数据范... 阅读全文

posted @ 2016-01-25 18:49 POOH1DROSE 阅读(650) 评论(0) 推荐(0) 编辑

摘要: 2016.1.25 (未更新完) 一、欧几里得算法(辗转相除法) 1、用途:快速计算两个数的最大公约数。 2、精髓:gcd(a,b)=gcd(b,a%b) 3、证明:设r=a mod b,则我们要证明的是gcd(a,b)=gcd(b,r) 设gcd(a,b)=c,则a=mc,b=nc,且m,n互质。 阅读全文

posted @ 2016-01-25 18:35 POOH1DROSE 阅读(1042) 评论(0) 推荐(0) 编辑

摘要: 2016.1.25试题描述 有n个小伙伴(编号从0到n-1)围坐一圈玩游戏。按照顺时针方向给n个位置编号,从0到n-1。最初,第0号小伙伴在第0号位置,第1号小伙伴在第1号位置,……,依此类推。 游戏规则如下:每一轮第0号位置上的小伙伴顺时针走到第m号位置,第1号位置小伙伴走到第m+1号位置,……,... 阅读全文

posted @ 2016-01-25 15:49 POOH1DROSE 阅读(442) 评论(0) 推荐(0) 编辑

摘要: 在计算形如ab的运算时,如果用朴素的算法需要O(b)的时间复杂度,当b很大时显然是不可取的,于是我们希望找到一种快速的算法来计算,尤其是题目中要求答案取模时。对于朴素的算法我们有ans=1;for(int i=1;i<=b;i++) (ans*=a)%=mod;我们可以简单优化一下,在循环之前加入a... 阅读全文

posted @ 2016-01-25 14:32 POOH1DROSE 阅读(610) 评论(0) 推荐(0) 编辑