数论
四维2000
SW2000
展开
-
POJ 1811 Prime Test (pollard_rho)
题意:给一个1e18的大数,求最小质因子 分析:裸板子题,可以测试板子,需要注意的是POJ G++不可以用srand,C++不可以用__gcd,而且__gcd存在出现负数的情况,所以还是手写一个gcd函数。 另外那个快速乘mul_mod这样写比较长但是可以优化大概10%的速度 代码: #include <cmath> //定义数学函数 #include <cstdio> //定义输入/输出函数 #include <cstdlib> //定义杂项函数及内存分配函数原创 2020-10-03 10:08:59 · 179 阅读 · 0 评论 -
UVA - 11827 Maximum GCD(流输入)
题意:求所有数对的gcd的最大值 解析:单独题意没什么难度,唯一的难点是没有给出m,也就是读入个数不确定,这里可以读入字符串后用快读来模拟,但也可以用stringstream,非常高级的一种用法,需要注意的一点是使用getline时也存在缓冲区的问题,需要视情况多读一个。 代码: #include <bits/stdc++.h> #define x first #define y second #define mid (l+r>>1) #define lo (o<<原创 2020-09-28 08:22:00 · 133 阅读 · 0 评论 -
2020牛客多校二J Just Shuffle (数论)
题意:问哪个置换执行k次后可以把123……n变成给出的序列,如不存在这样的置换输出-1,其中k为素数。 分析:根据置换的性质,置换是由环组成的,由于k是素数,所以无论环的周期m是多少,m和k%m都是互素的,所以一定存在满足要求的置换,所以由数论知识一定可以找到一个b使得b*(k%m)==1(mod m),这样就可以将给出的序列乘上b次,就得出了符合要求的置换,具体的那个置换逻辑比较绕,看了半天也还是很迷,之后遇到置换最好还是写一下。 代码: #include <bits/stdc++.h>原创 2020-09-17 15:13:00 · 152 阅读 · 0 评论