
数论
qpswwww
这个作者很懒,什么都没留下…
展开
-
[省选前题目整理][SGU 261]Discrete Roots(扩展欧几里得+中国剩余定理+原根+大步小步算法)
题目链接http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=22207题目大意已知k、y、pk、y、p,求xk≡y(modp)x^k \equiv y \pmod{p}的所有可行解思路首先,我们求出modp\mod p的原根gg。 不妨设gq≡y(modp)g^q \equiv y \pmod{p},qq可以通过大步小步算法求得。原创 2015-03-26 17:08:55 · 1073 阅读 · 0 评论 -
[UOJ 74][UOJ Round #6]破解密码(乘法逆元)
题目链接http://uoj.ac/problem/74思路不妨将这个字符串看成是一个26进制的数字abc...kabc...k 26n−1a+X=h026^{n-1}a+X=h_0 modmod p...(1)p...(1) 26X+a=h126X+a=h_1 modmod p...(2)p...(2)26∗(1)−(2)26*(1)-(2)得 26na−a=(26h0−h1)26^na-a原创 2015-03-09 10:05:26 · 1136 阅读 · 0 评论 -
[省选前题目整理][POJ 2407]Relatives(欧拉函数)
题目链接http://poj.org/problem?id=2407题目大意给出nn,求欧拉函数ϕ(n)\phi(n)思路有两种做法: 1、O(n)O(n)线性筛法,适合nn很小但是求欧拉函数次数很多的地方。由于此题nn过大因此会TLE。 2、根据欧拉函数公式分解nn的质因数,适合nn比较大但是求欧拉次数很少的地方,适合本题。代码1、O(n)O(n)线性筛#include <iostream>原创 2015-04-10 19:00:38 · 490 阅读 · 0 评论 -
[BZOJ 3240][NOI 2013]矩阵游戏(数学+乘法逆元)
题目链接http://www.lydsy.com/JudgeOnline/problem.php?id=3240思路考虑在同一行ii,从最左边的列11到最右边的列mm递推: fi,m=am−1fi,1+b1−am−11−a(a≠1)f_{i,m}=a^{m-1}f_{i,1}+b\frac{1-a^{m-1}}{1-a}(a\neq 1) fi,m=1+(m−1)b(a=1)f_{i,m}=1+原创 2015-04-24 09:18:24 · 1158 阅读 · 0 评论 -
[BZOJ 1407][NOI 2002]Savage(中国剩余定理+扩展欧几里得)
题目链接http://www.lydsy.com/JudgeOnline/problem.php?id=1407思路由于此题里n n的范围很小,因此可以直接从小到大暴力枚举洞穴个数m m(注:此题并不满足二分的性质),那么问题转变为一个判定性问题:已知m m,问所有野人在它们的有生之年里是否会出现冲突。直接暴力枚举野人i i和j j,我们要求他们俩第一次相遇的时间x x,容易构造一个同余式(step原创 2015-04-27 10:02:45 · 1865 阅读 · 2 评论 -
[POI 2012]Vouchers
题目链接题目大意考虑正整数集合,现在有n组人依次来取数,假设第i组来了x人,他们每个取的数一定是x的倍数,并且是还剩下的最小的x个。 正整数中有m个数被标成了幸运数,问有哪些人取到了幸运数。思路不要把这个题想复杂了,实际上这个题非常水。。。 记录last[x]+x=last[x]+x=从小到大第一个没有被用过的xx的倍数。代码#include <iostream>#include <stdio原创 2015-05-15 10:14:30 · 718 阅读 · 1 评论 -
[POI 2014]Solar Panels(数论)
题目链接http://main.edu.pl/en/archive/oi/21/pan题目大意给定a,b,c,da,b,c,d,要找出点对(i,j)(i,j),a≤i≤b,c≤j≤da \leq i \leq b,c \leq j \leq d,使得gcd(i,j)gcd(i,j)最大,求最大的这个gcd(i,j)gcd(i,j)思路不妨考虑枚举t=gcd(i,j)t=gcd(i,j),若在a≤i≤原创 2015-05-13 17:28:23 · 837 阅读 · 0 评论 -
[POI 2012]Distance(数学)
题目链接http://main.edu.pl/en/archive/oi/19/odl题目大意给你一个序列a[]a[],定义d(i,j)=d(i,j)=a[i],a[j]a[i],a[j]每次操作可以对其中之一乘一个质数pp或除以一个数pp(pp必须为被除数的约数),让a[i]=a[j]a[i]=a[j]的最少操作步数对于每个ii,求d(i,j)d(i,j)最小的jj,若有多个解,输出最小的jj思路原创 2015-06-17 19:05:04 · 956 阅读 · 0 评论