
数论
文章平均质量分 73
AC_Gibson
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
POJ2947 Widget Factory 高斯消元+扩展GCD解同余方程组
题目链接:http://poj.org/problem?id=2947题目大意:有n 种装饰物,m 个已知条件,每个已知条件的描述如下:p start enda1,a2......ap (1第一行表示从星期start 到星期end 一共生产了p 件装饰物(工作的天数为end-start+1+7*x,加7*x 是因为它可能生产很多周),第二行表示这p 件装饰物的种类(可能出现原创 2015-10-15 21:43:20 · 563 阅读 · 0 评论 -
POJ3243 Clever Y 解 高次同余方程
解高次同余方程A^x≡B(mod C)算法流程S1:i从0到100循环,如果满足A^i≡B(mod C),那么i就为所求,否则继续S2;S2:令d=0,D=1,执行如下循环:while((tmp=gcd(A,C))!=1) { if(B%tmp) return -1; //无解 ++d; C/=tmp; B/=tm原创 2015-06-08 13:21:22 · 1301 阅读 · 0 评论 -
HDU3117 Fibonacci Numbers 求斐波那契的前后4位
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3117分析:求第n个斐波那契数的前后各4位,对于求后4位,只需要矩阵连乘对10000取模即可,至于前4位呢,就是HDU1568的原型。需要注意的是,后4位对10000取模后如果高位为0,这个0不能省去。实现代码如下:#include #include using原创 2015-06-09 11:18:49 · 556 阅读 · 0 评论 -
HDU1568 Fibonacci 斐波那契的前4位
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1568分析:对于一个数来说,求前4为无非就是我们把这个数表示成d.xxxx的形式,然后取整即可,我们设该数为s,那么有:s=d.xxx*10^(len-4)log10(s)=log10(d.xxxxx)+log10(10^(len-4))=log10(d.xxxx)+len-原创 2015-06-09 11:05:59 · 766 阅读 · 0 评论 -
HDU1021 Fibonacci Again 循环节||取模
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1021题目大意:已知f[0]=7,f[1]=11,f[i]=f[i-1]+f[i-2](i>1),让你判断f[n]是否能被3整除。分析:考虑对3取模,可以找出循环节,n的范围为10^6,也可以打表。循环节实现代码如下:#include #include原创 2015-06-09 10:53:15 · 581 阅读 · 0 评论 -
POJ3233 Matrix Power Series 矩阵快速幂+二分求和
在看矩阵快速幂求和之前,我们先来看一下等比数列Sn=(a+a^2+a^3+...+a^n)mod M的求和取模:实现代码如下:#include #include #include using namespace std;typedef long long LL;const int M=10000009;LL power(LL a,LL b){ LL ans =原创 2015-06-09 16:10:29 · 988 阅读 · 0 评论 -
POJ1995 Raising Modulo Numbers 快速幂取模
题目链接:http://poj.org/problem?id=1995题目大意:求出∑(Ai^Bi)mod M.分析:简单的费马小定理快速幂取模,对于每一个Ai,Bi,分别求出Ai^B mod M然后相加再取模即可。实现代码如下:#include #include #include using namespace std;typedef lo原创 2015-06-09 16:34:57 · 616 阅读 · 0 评论 -
POJ1006 Biorhythms 中国剩余定理
题目链接:http://poj.org/problem?id=1006题目大意:每个人从出生开始都有三个周期:物理,情感,智力周期,已知他们的周期时长分别为23天,28天和33天。每个周期当中都有一个高峰期,并把这三个周期公共的一个高峰期叫做三重高峰期。现在分别给出你三个数p,e,i,代表在从年初算起的第p天是物理高峰期,第e天是情感高峰期,第i天是智力高峰期(并不一定是第一个原创 2015-06-09 18:49:17 · 574 阅读 · 0 评论 -
HDU1788 Chinese remainder theorem again 最小公倍数
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1788分析:由n%m=m-a,==>n%m+a=m,即,n+a≡0(mod m),其实(n+a)就是m的倍数,那么问题就变为了找出∑mi的最小公倍数,再减去a了。实现代码如下:#include #include using namespace std;typed原创 2015-06-09 19:29:20 · 698 阅读 · 0 评论 -
POJ2417 Discrete Logging 解高次同余方程
题目链接:http://poj.org/problem?id=2417实现代码如下:(一)#include #include #include #include using namespace std;//baby_step giant_step// a^x = b (mod n) n为素数,a,b < n// 求解上式 0<=x < n的解#defin原创 2015-06-08 13:35:22 · 617 阅读 · 0 评论 -
HDU1573 X问题 解同余方程组
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1573分析:判断同余方程组在某个范围内的解的个数,在POJ2891的基础上增加一步即可:设b数组中所有数的最小公倍数为lcm,那么我们在解出同余方程组的一个小于lcm的解r1后,令r1+k×lcm实现代码如下:#include #include using nam原创 2015-06-08 10:28:02 · 677 阅读 · 0 评论 -
线性同余方程初步应用分析
一元线性同余方程定义:a,b是整数,m是正整数,形如ax≡b(mod m),且x是未知整数的同余式称为一元线性同余方程。定理:a,b,m是整数且m>0,gcd(a,m)=d,如果d|b,则方程恰有d个模m不同余的解,否则方程无解。由同余方程式的定义可知:ax+my=b(y为整数),这个方程称为二元一次不定方程。(1)解一元线性同余方程设d=gcd(a,m),由定理可知若原创 2015-06-05 10:16:26 · 2324 阅读 · 0 评论 -
HDU4228 Flooring Tiles 反素数应用
题目链接:点击打开链接题目大意:n块1×1的正方形砖块可以拼成m种矩形,现在给出m,让找出最小的n。分析:首先我们知道,n块正方形的砖块要想拼成矩形,该矩形的长、宽必为n的约数;其次,要拼出m种不同的矩形,n至少得有2×m或2×m-1个约数,这样问题就变为了:给出m,找出最小的反素数n,使其约数个数为m。数据量为75,打表即可。实现代码如下:#inc原创 2015-05-19 15:25:44 · 517 阅读 · 0 评论 -
POJ2769 Reduced ID Numbers 求余应用-暴力
题目链接:http://poj.org/problem?id=2769题目大意:T.Chur在大学里教授不同群体的学生,每个学生都有一个独特的学生证号码SIN(0到10^6范围内的整数).T.Chur希望在每个分组内找到最小的整数m,使得该组内的所有SIN对m取余的值都不同。分析:从0开始枚举每一个整数i作为m的值,分别判断分组内有没有两个数对m取余相同即可。可以用一个数组原创 2015-06-05 09:27:15 · 567 阅读 · 0 评论 -
POJ2115 C Looooops 解一元线性同余方程
题目链接:http://poj.org/problem?id=2115题目大意:有代码段for(variable=A;variable!=B;variable+=C) statement;已知所用到数都是mod 2^k的数,问你statement语句一共执行了多少次,如果循环为死循环,输出FOREVER.分析:同余方程求解 相当于求A+Cx≡B(mod 2^原创 2015-06-05 15:45:05 · 1087 阅读 · 0 评论 -
NEFUOJ84 五指山 解一元线性同余方程
题目链接:http://acm.nefu.edu.cn/JudgeOnline/problemshow.php?problem_id=84分析:我们设需要t片筋斗云,则猴子要想由x到达y,就需要满足x+dt-y=nL(L∈Z),即==>dt≡(y-x)(mod n),只需解出该一元线性同余方程,然后找出最小的正整数解即可。类似POJ1061 青蛙的约会。求解线性同余方程,可以参原创 2015-06-05 16:17:38 · 1086 阅读 · 0 评论 -
佩尔方程求解问题
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3292题目大意:讲述的是滥竽充数的故事。有一个乐队,可以站成一个边长为x的正方形,也可以减去一个人,然后站成若干个边长为y的正方形,很明显乐队人数不是唯一的,现在让你找出第k大的乐队人数。分析:根据题意可以提炼出二元不定方程x^2-D*y^2=1,典型的佩尔方程。首先我们知道,若原创 2015-06-26 09:49:25 · 4391 阅读 · 1 评论 -
HDU3579 Hello Kiki 解同余方程组
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3579题目大意:小kiki喜欢收集硬币,她把收集的硬币数目用如下方式描述:把硬币均分成mi份,余下ai个。现在小kiki的baba想知道小kiki收集了多少硬币,你能帮他计算出来么?分析:典型的同余方程组X≡Mi(mod Ai)的求解。需要注意的是,题中Outpu原创 2015-06-08 11:07:26 · 712 阅读 · 0 评论 -
HDU2815 Mod Tree 高次同余方程
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2815题目大意:一颗K叉树,让你找出最小的深度D,使该深度上的叶子数对P取模为N。分析:高次同余方程K^D≡N(mod P)的求解问题。只是需要注意的是,如果N>P,那么显然是不存在的(这地方WA哭了)。实现代码如下:#include #原创 2015-06-08 15:47:12 · 1267 阅读 · 0 评论 -
HIT2255 Not Fibonacci 变形斐波那契前n项和
题目链接:http://acm.hit.edu.cn/hoj/problem/view?id=2255题目大意:f[0]=a,f[1]=b,f[n]=p×f[n-1]+q×f[n-2],计算∑f[i]mod 10^7(i from s to e).分析:对于斐波那契数列的前n项和,我们可以参考HIT2060.对于这题,我们知道:|0 1| |f(0)||q p|原创 2014-07-29 17:28:27 · 669 阅读 · 0 评论 -
Miller-Rabin素数测试
如果要判断一个比较大的数是否为素数,那么此时传统的试除法和筛法显然不再适用,我们引入一种概率型素数判定方法——Miller-Rabin素数测试。 由费马小定理可以知道,若n是素数且a是整数,则满足a^n≡a(mod n).若存在a不满足上式,那么n是合数。由此我们定义伪素数:令a是一正整数,若n是合数且满足a^n≡a(mod n),那么n称为以a为基的伪素数。 Miller-R原创 2015-07-03 15:54:19 · 3082 阅读 · 0 评论 -
ACdream1077 LCM Challenge 数学题
题目链接:http://acdream.info/problem?pid=1077题目大意:给你一个数n,在[1,n]内找出3个数(可以重复),使得这三个数的最小公倍数最大。分析:要想使三个数的最小公倍数最大,那么这三个数肯定是互素的,试想一下,如果三个数为a,b,c,且他们不互素,我们不妨假设gcd(a,b)>1,那么在[1,a]内肯定存在这么一个数a'使gcd(a',b原创 2015-08-14 16:27:09 · 577 阅读 · 0 评论 -
ACdream1007 a+b 快速幂求和
题目链接:http://acdream.info/problem?pid=1007题目大意:给出n个ai和和幂次k,计算∑ai^k mod 10000000007的值。分析:比较简单的费马小定理应用,注意下ai的值可能是负数就行了,我们可以按k的奇偶来讨论:对于k是偶数,ai的正负对结果是没有影响的,k为奇数时,把ai小于0的情况看做是正数,算出ai^k之后用结果减去这个值原创 2015-08-14 13:41:43 · 920 阅读 · 1 评论 -
HDU5400 Arithmetic Sequence 数学题
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5400题目大意:定义(d1,d2)算术序列为:对于给定的序列b1,b2,...,bn,存在i使得bj+1=bj+d1( j∈[1,i) );bj+1=bj+d2(j∈[i,n)).现在给出d1,d2和一个序列a1,a2,...,an,找出有多少个区间[l,r]满足(d1,d2)算术序列。原创 2015-08-18 17:33:35 · 576 阅读 · 0 评论 -
HDU5478 Can you find it 快速幂取模
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5478题目大意:找出满足模等式a^(k1*n+b1)+b^(k2*n-k2+1)=0(mod C)的所有(a,b),并按升序输出。其中C为素数且小于2*10^5,a,b分析:因为对任意的正整数n都成立,n=1时有:a^(k1+b1)+b=0(mod C),我们令等式两边同时乘上a原创 2015-09-27 11:00:01 · 452 阅读 · 0 评论 -
HDU5446 Unknown Treasure Lucas+中国剩余定理
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5446题目大意:求C(n,m) mod M的值,其中M=p1*p2*...*pk分析:首先我们由Lucas定理可以解决大组合数取模的问题,即,我们先求出Ai=C(n,m) mod pi,然后得到k组线性同余方程组,接下来中国剩余定理解出方程组的解即可。需要注意的是,由于n和m都是原创 2015-09-16 17:11:04 · 586 阅读 · 0 评论 -
HDU1042 N! 高精度:计算n!精确值
求n!的精确值。可以直接模拟乘法操作,记录每位的值,这种方法耗时比较多。实现代码如下(1236MS)://by Ibsen#include #include using namespace std;#define MAX 10000000int a[MAX];//存数运算结果int main(){ int n; while(scanf("%d",&原创 2014-09-11 10:30:31 · 732 阅读 · 0 评论 -
POJ1845 Sumdiv A^B的约数和(逆元解法或二分乘法)
题目链接:http://poj.org/problem?id=1845题目大意:计算A^B的所有约数的和对9901取模后的结果。分析:我们知道,对于一个正整数n,我们有n=(p1)^a1*(p2)^a2*...*(pk)^ak,定义约数和函数σ(n)=∏(pi^(ai+1)-1)/(pi-1);那么对于A^B,我们有A^B=(p1)^(B*a1)*(p2)^(B*a2)*.原创 2015-09-19 11:14:46 · 533 阅读 · 0 评论 -
BZOJ2186 [Sdoi2008]沙拉公主的困惑 数论:递推求逆元
题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=2186题目大意:求1到n!中与m!互素的数的个数。分析:我们知道,1到m中与m互素的数的个数是Φ(m)个,如果有m|n,那么我们有:1到n中与m互素的数的个数为n/m*Φ(m)个。这样问题就变为了求n!* ∏(1-1/pi)。实现代码如下:#inclu原创 2015-09-24 11:26:27 · 613 阅读 · 0 评论 -
POJ3358 Period of an Infinite Binary Expansion 欧拉定理应用
题目链接:http://poj.org/problem?id=3358题目大意:给出一个小于1的分数,把他转换成二进制形式,并找出小数点到循环部分的最少距离以及循环节的最小长度。分析:对于一个分数n/m,首先我们要把它化成最简形式:分别令n/=gcd(n,m),m/=gcd(n,m)。至于将一个十进制小数化为k进制小数的方法呢,我们有如下代码段(数组bit用来存放对应k进制原创 2015-07-21 18:40:59 · 668 阅读 · 0 评论 -
HDU5373 The shortest problem 数学水题
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5373题目大意:给你一个整数n和操作次数t,对于每次操作,我们把n的各个位上的数字加起来,把得到的数放到n的末尾形成一个新的整数n',例如n=123,t=3,我们有变换123=>1236=>12312=>1231215,最终得到的n'=1231215,现在我们要判断n'能否被11整除。原创 2015-08-13 09:24:39 · 458 阅读 · 0 评论 -
HDU5407 CRB and Candies 数论
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5407题目大意:给出一个整数n,我们想知道LCM[ C(n,0),C(n,1),...,C(n,n) ]%mod的值。分析:对于函数a(n)=LCM[ C(n,0),C(n,1),...,C(n,n) ]和函数b(n)=LCM[ 1,2,3,...,n ],我们有a(n)=b(n原创 2015-08-23 12:57:37 · 557 阅读 · 0 评论 -
Pollard-rho大整数分解
首先低于一般范围的整数分解,我们可以打一个素数表然后用试除的方法对其进行质因子分解。 具体实现代码如下:#include #include #include using namespace std;#define N 65555bool p[N];int prime[N],num=0;void init(){ memset(p,true,sizeof(p));原创 2015-07-06 11:10:25 · 3504 阅读 · 0 评论 -
POJ2886 Who Gets the Most Candies? 线段树单点更新+反素数
题目链接:http://poj.org/problem?id=2886题目大意:n个小朋友站成一个圈做游戏,每个小朋友手中有一个非零数字num(整数代表从这点起顺时针数num个人,负数代表逆时针数num个人),游戏开始时第k个人出列,然后下一个出列的人为上一个出列人手中数字所指的人,以此类推,直到所有人都出列为止。F(p)为第p个出列的人得到的糖果数量,定义F(p)为p的约数的个数,找原创 2015-08-25 10:02:15 · 668 阅读 · 0 评论 -
POJ2429 GCD & LCM Inverse pollard_rho大整数分解
题目链接:http://poj.org/problem?id=2429题目大意:给出两个数的最大公约数和最小公倍数,让你找出满足条件的两个数,使他们的和最小。分析:我们知道,对于两个数a,b和他们的最大公约数gcd以及最小公倍数lcm,有lcm=a*b/gcd,进一步变形可以得到:(a/gcd * b/gcd)*gcd=lcm,即(a/gcd * b/gcd)=lc原创 2015-07-20 17:31:36 · 1201 阅读 · 0 评论 -
HDU4344 Mark the Rope pollard_rho大整数分解应用
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4344题目大意:给出一个长为n(n小于2^63)的管子,现在Eric要在管子上做标记,每隔L个长度单位做一个标记,从管子头端开始,保证最后一次标记恰好在管子的尾端。让你找出有多少个这样的L(L分析:分析一下就可以知道,这题其实就是让找正整数n有多少个素因子。我们用pollard_原创 2015-07-20 19:04:59 · 972 阅读 · 0 评论 -
欧拉函数简单应用
题目链接:http://poj.org/problem?id=2407题目大意:求n的欧拉函数。分析:直接模板即可。实现代码如下:#include #include using namespace std;int phi(int n){ int rea=n; for(int i=2;i*i<=n;i++) if(n%i==原创 2015-07-20 20:11:35 · 977 阅读 · 0 评论 -
整除23以内的数的特殊性质
在ACM竞赛中我们有时会遇到整除取模的问题,对于整除问题,我们有下列性质:(1)1与0的特性: 1是任何整数的约数,即对于任何整数a,总有1|a. 0是任何非零整数的倍数,a≠0,a为整数,则a|0. (2)若一个整数的末位是0、2、4、6或8,则这个数能被2整除。(3)若一个整数的数字和能被3整除,则这个整数能被3整除。 (4) 若一个整数的末尾两位数能被4整除,则原创 2015-08-13 09:22:50 · 1001 阅读 · 0 评论 -
POJ3696 The Luckiest number 欧拉函数应用
题目链接:http://poj.org/problem?id=3696题目大意:对于给定的整数L,找出L能整除最短的全8序列的长度,做为Bob的幸运数字。分析:我们设幸运数字是x,由题意可知,长度为x全8序列为:8/9 * (10^x-1)=L * p,即(10^x-1)=9 * L * p/8。令m=9 * L/gcd(L,8),则存在p',使9 * L * p/8=m原创 2015-07-21 09:38:45 · 1376 阅读 · 0 评论 -
POJ2891 Strange Way to Express Integers 一元线性同余方程组
题目连接:http://poj.org/problem?id=2891题目大意:有一种表示非负整数的方法:选择k个不同的正整数a1,a2,...,ak,对于某个整数m分别对ai求余,对应余数为ri,如果只当选择a1,a2,...,ak,那么整数m可有整数对(ai,ri)唯一表示。现在已知整数对(ai,ri),让确定出整数m.分析:典型的解同余方程组的题。原创 2015-06-05 11:25:38 · 657 阅读 · 0 评论