随笔分类 -  数论--欧基里德算法

摘要:题目链接:https://vjudge.net/problem/POJ-2773 题意:给定m,k,求与m互质的第k个数。 思路一:利用gcd(a,b)=gcd(b*t+a,b)知道,与m互质的数是以m为周期分布的,这样可以先枚举小于m的所有与m互质的数,利用周期就可以得到第k小的数了,这样复杂度为 阅读全文
posted @ 2019-05-08 15:34 Frank__Chen 阅读(487) 评论(0) 推荐(0)
摘要:题目链接:https://vjudge.net/problem/POJ-1061 题意:在一个首位相接的坐标轴上,A、B开始时分别位于X,Y处,每个单位时间向右移动m,n米,问是否能相遇,坐标轴长L。 思路:与poj2115几乎一样,扩展欧基里德模板题。题意即X+m*x=Y+n*x (mod L), 阅读全文
posted @ 2019-05-05 16:12 Frank__Chen 阅读(217) 评论(0) 推荐(0)
摘要:题目链接:https://codeforces.com/contest/1152/problem/C 题意:给定a,b(<1e9)。求使得lcm(a+k,b+k)最小的k,若有多个k,求最小的k。(k>=0) 思路:昨晚打cf因为某些原因,沉不下心来看题,本来是个上分的好机会QAQ。。。所以吸取教训 阅读全文
posted @ 2019-04-25 16:11 Frank__Chen 阅读(145) 评论(0) 推荐(0)
摘要:题目链接:https://vjudge.net/problem/POJ-2115 题意:模拟for循环for(int i=A;i!=B;i+=C),且数据范围为k位无符号数以内,即0~1<<k-1,如果能循环为有限次则输出循环次数,否则输出FOREVER。 思路:典型的扩展欧基里德题。题意即求Cx= 阅读全文
posted @ 2019-04-19 20:57 Frank__Chen 阅读(406) 评论(0) 推荐(0)
摘要:题目链接:https://ac.nowcoder.com/acm/contest/625/H 题意:给定n个数(<=1e9)的序列,其中n<=5e5,求该序列所有子序列的对应的gcd对1e9+7取模后的值。 思路:比赛的看错题了,以为是要求n个数任意两个数的gcd的和,怪样例QAQ。。不过就算我没看 阅读全文
posted @ 2019-04-15 09:12 Frank__Chen 阅读(363) 评论(0) 推荐(0)
摘要:a*x+b*y=gcd(a,b),该方程一定有解(原因暂时留坑,以后来填),扩展欧基里德算法就是用来求x,y的。 具体求法,因为a*x+b*y=gcd(a,b),而gcd(a,b)=gcd(b,a%b),所以有b*x1+(a%b)*y1=gcd(a,b),而a%b=a-(a/b)*b,代入之后得:a 阅读全文
posted @ 2019-04-07 15:38 Frank__Chen 阅读(286) 评论(0) 推荐(0)
摘要:gcd即最大公约数,lcm即最小公倍数。 首先给出a×b=gcd×lcm 证明:令gcd(a,b)=k,a=xk,b=yk,则a×b=x*y*k*k,而lcm=x*y*k,所以a*b=gcd*lcm。 所以求lcm可以先求gcd,而求gcd的方法就是辗转相除法,也叫做欧几里德算法,核心为gcd(m, 阅读全文
posted @ 2019-03-13 20:55 Frank__Chen 阅读(1385) 评论(0) 推荐(0)
摘要:Uniform Generator Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 35023 Accepted Submission(s): 阅读全文
posted @ 2018-12-06 14:43 Frank__Chen 阅读(134) 评论(0) 推荐(0)