
ACM_数论and数学类
JayYe
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
ACdream 1148 GCD SUM (久违的莫比乌斯)
题目链接题意:给出N,M执行如下程序:long long ans = 0,ansx = 0,ansy = 0;for(int i = 1; i for(int j = 1; j if(gcd(i,j) == 1) ans ++,ansx += i,ansy += j;cout 思路: 首先要会莫比乌斯,然后对于ans,自然是非常好求原创 2014-08-04 13:48:14 · 1338 阅读 · 0 评论 -
Ural 1091. Tmutarakan Exams (莫比乌斯反演)
题目链接: http://acm.timus.ru/problem.aspx?space=1&num=1091题意:从1~S个数字里选出K个数使得K个数的gcd > 1的选择情况数有多少种,注意的是,如果答案大于10000,输出10000即可。K思路:很简单的莫比乌斯反演水题,设F(x)为选出k个数的gcd为x的倍数的情况数,则反演函数f(x)即为选出k个数的gcd为x的情况数就可原创 2013-12-13 16:03:16 · 1384 阅读 · 0 评论 -
Codeforces Round #137 (Div. 2)
C:给你n个数和m个数 n , m 思路:直接统计分子分母的所有素因子的个数,然后消去各个可以消去的素因子即可。这里我用的筛素数法是O(N)的并且顺便处理出了每个数最小的素因子,这样子的话分解素因子岂不是很简单了。。。复杂度超低nice~#include #include #include #include using namespace std;#de原创 2013-12-02 23:59:10 · 910 阅读 · 0 评论 -
SPOJ-PGCD Primes in GCD Table (Mobius反演 好题)
题意:给你a,b,求gcd(i, j) = k (k为素数)的个数,1 解题思路:Mobius反演有两种形式:设 F(n) = sigma( f(d) ), 其中d | n (也就是n%d==0) 。则 f(n) = sigma( F(d)*mu(n/d) )设 F(d) = sigma( f(n) ),其中d | n 。则f(d) = sigma( F(n)*mu(n原创 2013-10-11 18:43:38 · 1854 阅读 · 0 评论 -
HDU 1402 A * B Problem Plus (FFT模板题)
HDU 1402 A * B Problem Plus (FFT模板题)原创 2013-09-26 18:43:17 · 1823 阅读 · 0 评论 -
HDU 4767 Bell (中国剩余定理)
HDU 4767 Bell (中国剩余定理)原创 2013-09-28 20:48:36 · 2935 阅读 · 6 评论 -
HDU 4609 3-idiots (FFT)
HDU 4609 3-idiots (FFT)原创 2013-09-26 23:58:15 · 1265 阅读 · 0 评论 -
HDU 4091 Zombie’s Treasure Chest (不错的数论题)
题意:给你一个体积V,第一种物品的体积价值s1,v1,第二种物品的体积价值s2,v2,物品都是任意个,问把两种物品放入V体积中最大的价值是多少。解题思路:设L = lcm(s1, s2),a = L/s1表示L体积下物品一的个数,b = L/s2表示L体积下物品二的个数,则最佳情况性价比低的那个物品个数必然不大它与L体积下的个数。所以可以由这个公式,设最佳情况体积为k*L +原创 2013-10-11 08:50:57 · 1072 阅读 · 0 评论 -
UVa 11317 GCD+LCM 欧拉函数log求位数
UVa 11317 GCD+LCM 欧拉函数log求位数原创 2013-09-25 20:27:35 · 1492 阅读 · 0 评论 -
UVa 10837 A Research Problem 欧拉函数
题意:给你一个欧拉函数值 phi(n),问最小的n是多少。 phi(n) 解题思路:对于欧拉函数值可以写成原创 2013-09-25 14:13:12 · 1497 阅读 · 0 评论 -
HDU 2815 Mod Tree 解a^x = b(mod n)非互质
HDU 2815 Mod Tree 解a^x = b(mod n)非互质原创 2013-09-24 09:05:38 · 1836 阅读 · 0 评论 -
2013 ACM/ICPC Asia Regional Changsha Online - J Candies
2013 ACM/ICPC Asia Regional Changsha Online - J Candies原创 2013-09-23 12:00:03 · 1036 阅读 · 0 评论 -
UVa 11256 Repetitive Multiple
题意:给你一个n,问n的倍数中最小的循环整数是多少。循环整数的定义是一个没有前导0的整数有某一部分重复x次构成。比如 11,123123,454454,像101不能写成0101而被看成循环整数。解题思路:对于一个长度为q的整数,循环节长度肯定是q的约数,比如长度为6的整数,循环节可以是1,2,3,不能是它本身,如果循环节长度是3的,必然可以写成1001*x,其中99 知原创 2013-10-03 19:55:47 · 1204 阅读 · 0 评论 -
Ural 1286. Starship Travel (扩展欧几里得)
题意:给你p、q,初始状态(x1, y1),终点状态(x2, y2),每次操作可以是 (+p, +q), (+p, -q) , (-p, +q), (-p, -q), (+q, +p), (+q, -p), (-q, +p), (-q, -p),问初始状态能不能到终点状态。思路:对于初始状态到终止状态变化了 (x2-x1, y2-y1),设为变化了(A, B) ,得方程 px1 + q原创 2014-01-22 21:37:37 · 1285 阅读 · 2 评论 -
Ural 1430. Crime and Punishment(数论)
题目链接:http://acm.timus.ru/problem.aspx?space=1&num=1430题意: 求x,y使得ax + by 思路:假设a > b,只需要暴力枚举x判断即可,上限top为min(n/a, b),复杂度是O(sqrt(n))的。证明很简单,如果x > b则可以写成 a(x + b) + by = ax + ab + by = ax + b(a+y),原创 2014-01-23 23:50:44 · 1222 阅读 · 0 评论 -
poj 1753 Flip Game 高斯消元
这题也是高斯消元的模板题,要枚举自由变元求得最优解。也可以直接暴力枚举,不过有技巧的是,只需要第一行枚举下,每行得到使得该行以上可以的状态,然后继续往下枚举。我是感觉直接高斯消元还简单明了点~#include #include #include using namespace std;int a[22][22] , x[22], xx[22], n = 4 ,var, equ原创 2013-06-04 23:30:11 · 1045 阅读 · 0 评论 -
POJ 1811 Prime Test 素性测试 分解素因子
POJ 1811 Prime Test 素性测试 分解素因子原创 2013-09-25 19:04:00 · 1567 阅读 · 0 评论 -
HDU 4914 Linear recursive sequence(矩阵乘法递推的优化)
题解见X姐的论文 矩阵乘法递推的优化,只是mark一下。。#include #include #include #include using namespace std;typedef __int64 ll;const double pi = acos(-1.0);const int N = 10000+5;const double eps = 1e原创 2014-08-10 14:42:37 · 2449 阅读 · 0 评论 -
HDU2481 Toy (数论好题)
该题果然是个好题啊!题意来自上一题, ( http://blog.youkuaiyun.com/jayye1994/article/details/37814965 ) BZOJ 1002: [FJOI2007]轮状病毒上一题是旋转后相同视为不同情况,这题旋转后相同视为同一种情况。就这么一个小小的区别,上一题用到了dp,这一题用到了dp、筛素数、二进制模拟乘法、矩阵、快速幂、欧拉函数、b原创 2014-07-15 15:53:08 · 1841 阅读 · 0 评论 -
BZOJ 1002: [FJOI2007]轮状病毒
好久好久好久好久没写博客了,由于csdn改版了,一直不大喜欢,所以也就不大乐意上博客了。。其实说起来也没什么题好写的,有时候还是会做到好题的,由于已经忘记了csdn忘记了我有博客,于是就没写了。but 现在还是继续开始吧,有什么感觉不错的题还是可以mark下的。接下来是题意,中文题就是好,直接上题目。。 给定n(N思路:题目就是求最小生成树的种数,中心的点必须要原创 2014-07-15 14:47:48 · 3097 阅读 · 1 评论 -
HDU 4887 Endless Punishment (矩阵离散对数)
题意: 给你两个长度为n(n 思路:由于n普通的离散对数 http://blog.youkuaiyun.com/jayye1994/article/details/11961635矩阵离散对数的话,由于总状态数只有2^31,x不会超过总状态数,假设tot是总状态数,定义m = sqrt(tot) + 1,先处理出C * B^i (0 code:{优快云:CODE:4原创 2014-08-03 21:21:47 · 2648 阅读 · 6 评论 -
uva 10090 - Marbles 扩展欧几里得
题意:给你一个n,c1, n1, c2, n2 ,要保证x*n1 + y*n2 = n 且 要 x*c1 + y*c2最小首先来复习下扩展欧几里得,对于一元二次方程 ax + by = n , 扩展欧几里得求出 ax + by = gcd(a,b)的一组x0, y0 , 令d = gcd(a,b) ,如果 d|n ,方程有解 。ax + by = d方程通解为 x = x0 + b*t原创 2013-07-22 13:42:27 · 1015 阅读 · 0 评论 -
UVa 10413 Crazy Savages(扩展欧几里得)
题意:有m个洞穴成一个环状,现在有n个野蛮人,给你每个野蛮人的初始位置c[i],每个野蛮人下一天要去顺时针的第p[i]个洞穴,每个野蛮人存活天数为l[i],如果某一天两个野蛮人来到同一个洞穴,就会打架了~必须要死一个了~现在给你所有的条件除了m,问m至少为多少才能保证没有野蛮人打架死亡的。解题思路:枚举m,初始的m由输入数据决定,如果第i个人和第j个人在某一天碰到一起了,可以这原创 2013-10-01 17:06:05 · 1355 阅读 · 1 评论 -
BZOJ 1951: [Sdoi2010]古代猪文 (数论各种定理)
题目链接题意:给你N,G, 求G^( sigma( C(N, d) ) ) % MOD, d为N的因数 , MOD = 999911659思路:根据 指数循环节 可知ans = G^( sigma( C(N, d) )%(MOD-1) + MOD-1 ) %MOD因为MOD-1拆成素数相乘为2*3*4679*35617,根据Lucas定理求出sigma(C(N, d)) % m, m原创 2014-04-09 18:52:07 · 2220 阅读 · 0 评论 -
lightoj 1289 LCM from 1 to n
题意: 求LCM(1, 2, 3, ... n)的值mod 2^32思路:很显然我们是要求所有的 注意这里的n#include #include using namespace std;typedef long long ll;const int N = 100000000+2;const ll MOD = 1LL<<32;unsigned原创 2014-03-15 10:14:56 · 1681 阅读 · 0 评论 -
Codeforces Round #201 (Div. 1)
题目链接A:a, b得到a-b,然后b-(a-b)。这个过程就像求gcd的过程,很容易想到最后所有的数肯定都是gcd(a1, a2, ... an)的倍数。Code_AB:设dp[i][j][k]表示a串的i位置之前和b串的j位置之前的后缀是坏的串的前k个字符的最长的公共子序列的长度。然后转移需要处理出kmp的next数组进行转移。Code_BC原创 2014-02-24 21:59:18 · 1436 阅读 · 0 评论 -
Ural 1268 Little Chu (原根)
对于两个正整数,由欧拉定理可知,存在正整数, 比如说欧拉函数,即小于等于 m 的正整数中与 m 互质的正整数的个数,使得。由此,在时,定义对模的指数为使成立的最小的正整数。由前知 一定小于等于 ,若,则称是模的原根。摘自维基百科这个题目就是要求一个质数n的最大的原根现在的问题就是怎么求原根,如果直接暴力是 O(nlogn * 因子数),显然是不行的。。方法:原创 2014-01-20 00:29:24 · 1686 阅读 · 2 评论 -
ACM hdu 数论题集
Volume 1http://acm.hdu.edu.cn/showproblem.php?pid=1005http://acm.hdu.edu.cn/showproblem.php?pid=1014http://acm.hdu.edu.cn/showproblem.php?pid=1019Volume 2http://acm.hdu.edu.cn/showproblem.转载 2013-09-11 10:22:14 · 3428 阅读 · 0 评论 -
POJ 1322 Chocolate (dp or 组合数学母函数)
今天学了组合数学的母函数,发现其用处有时候真的会是很犀利原创 2013-08-10 19:50:04 · 1604 阅读 · 0 评论 -
uva 10140 - Prime Distance
题意:给你一个L,U,求L到U中相邻最近的两个素数和相邻最远的两个素数,(1<=L<U<=2147483647) 即maxn =2147483647 素数筛选法预处理出sqrt(maxn)的素数表,对于给定的L,U,也是相当于筛选法,只需要把L,U范围内素数的倍数筛选掉就行#include #define LL long longbool vis[111111],原创 2013-07-22 13:47:36 · 1903 阅读 · 0 评论 -
poj 3695 Rectangles 线段树扫描线 or 容斥原理
POJ 3695题意 : 求矩形的面积并扫描线 : 直接线段树扫描线会超时,因为询问实在是太多了,必须要离散化,离散化如果还超时的话只能继续各种优化了,这里我把x边都预处理一下,就避免了询问里再排序容斥原理 :对于每一次询问处理出重合 1 到 r 次的面积(r 为每次询问的矩形数) , 然后进行容斥原理,这里我处理重合面积的方法是这样的,对于前两个矩形如果重合,原创 2013-06-05 21:45:07 · 1287 阅读 · 2 评论 -
poj 3185 The Water Bowls 高斯消元
经典开关问题,不过这回给出的是一行开关而不是矩阵开关。高斯消元枚举自由变元#include #include #include using namespace std;int n = 20;int a[22][22] , x[22], freex[22],xx[22];void debug(){ puts("debug"); int i,j; for(i = 0;i原创 2013-06-04 23:44:33 · 901 阅读 · 0 评论 -
poj 1222 EXTENDED LIGHTS OUT 高斯消元
高斯消元模板题#include #include #include using namespace std;int equ = 30 , var = 30;int a[33][33] , map[6][6] ,x[33];int dx[]={1,-1,0,0};int dy[]={0,0,1,-1};void debug(){ puts("debug"); for(i原创 2013-06-04 22:21:53 · 891 阅读 · 0 评论 -
poj 1830 开关问题 高斯消元
题意:给你n个开关,给定开关的初状态和要达到的末状态,并给出i j 代表操作i也会影响j。如果有可行方法,输出方法总数。否则输出“Oh,it's impossible~!!”。这样我们就可以很快根据给定的数据建立一个方程组高斯消元求解。我们求得的自由变元个数为k,可行方法自然就是(1#include #include #include using namespace st原创 2013-06-04 23:41:04 · 789 阅读 · 0 评论 -
poj 1681 Painter's Problem 高斯消元
还是经典的高斯消元,和poj1753其实一模一样。要枚举自由变元得到最优解,不过这题不枚举自由变元使得自由变元都为0也能过,事实上必须要枚举的,数据太弱了~像1753不枚举自由变元的话就过不了。我写的是枚举自由变元的。#include #include #include using namespace std;int a[255][255] , x[255] ,xx[255]原创 2013-06-04 23:34:27 · 933 阅读 · 0 评论 -
poj 1487 Single-Player Games 高斯消元
这题虽然做的人不多,其实还是很裸的高斯消元。题意还是很好理解的,比如对于第二个样例2a = (1 b)b = (4 a)我们可以得出 a = 0.5+0.5*b , b = 0.5*4+0.5*a,这样就可以建立方程组来解题。预处理有点麻烦,我是对于每个区间递归处理的,代码有点搓,但还是比较好理解的。前面由于精度问题没经验,被坑了好几次。。。还很水,希望快点强大起来!原创 2013-06-04 22:17:08 · 1462 阅读 · 0 评论 -
poj 1166 The Clocks BFS or 高斯消元
这种题一看到就可以想到暴力搜索,不过用高斯消元解同余方程组应该可以做,但我还是没做出来。听别人说是由于mod 是 4不是素数,所以高斯消元过程中对4取余会导致解集增大,过程中就不能取余了,但是好像消元后得到的解集也不是正确的,一直在疑惑中,希望路过的大牛们指点下如何用高斯消元解另外附上我很挫的bfs代码#include #include #include using na原创 2013-06-04 23:52:37 · 1174 阅读 · 0 评论 -
poj 2065 SETI 高斯消元
题意:给你一个p 和一个只有小写字母或者*的字符串,1 = a ,2 = b,0 = *,字符串长度为n,代表f(k) f (k) = ∑0aiki 求a[i] (0 这题的系数矩阵是范德蒙德行列式。。所以解集是唯一的。#include #include #include using namespace std;#define LL __int64int var ,原创 2013-06-04 23:58:05 · 975 阅读 · 1 评论 -
poj 2356 and 3370 鸽巢原理
题意 : 给你n个整数,取其中的任意个整数满足相加的和是n的倍数处理出前k个数的sum[k] (1 根据鸽巢原理,有n个余数 , 余数0 ~ n ,如果没有余数0,至少有两个余数相同,那么这两个sum相减得到的就是n的倍数POJ2365 code#include int a[11111] , sum[11111], vis[11111];int main()原创 2013-06-05 21:47:53 · 1131 阅读 · 0 评论 -
POJ 3904 Sky Code 容斥原理
POJ 3904题意 : 求给定的n个数中4个数的最大公约数为1的组合数刚开始看居然只有300不到的人A了,就认为可能不简单,原来做起来的话只是比较清楚的容斥原理。首先要求出每一个数的素因子,然后对于求出的素因子进行组合,加到vis[i][j]上,表示由i个素因子组合成的数j的个数。然后就是容斥原理,总的组合数为sum = n*(n-1)*(n-2)*(n-3)/24原创 2013-06-05 21:42:02 · 1569 阅读 · 0 评论