Loading

随笔分类 -  数论

摘要:P6860 象棋与马 杜教筛 题意 有一个无限大的棋盘,有一个马最初在$(0,0)$,它的每步可以走一个$a \times b$的矩形,即能够走到$(x \pm a,y \pm b),或者(x \pm b,y \pm a)$ 若马通过上述移动方式可以达到棋盘中任意一点,那么$p(a,b) = 1$, 阅读全文
posted @ 2020-10-28 22:22 MQFLLY 阅读(146) 评论(0) 推荐(0)
摘要:2020CCPC Weihai Site L.Clock Mater 数论,背包 题意 抽象出来就是给定$n$,构造出最大的$LCM(x_1 * x_2 *x_3....)$且$x_1 + x_2 + x_3 ... = n$ \[ 1\leq T \leq 30000\\ 1\leq b \leq 阅读全文
posted @ 2020-10-28 18:13 MQFLLY 阅读(143) 评论(0) 推荐(0)
摘要:BZOJ 4407 于神之怒加强版 莫比乌斯反演,线性筛 题意 给定$n,m,k$,求 \[ \sum_{i = 1}^{n}\sum_{j = 1}^{m}gcd(i,j)^k mod(1e9 + 7) \] \[ 1\leq T \leq 2000\\ 1\leq n,m,k \leq 5e6 阅读全文
posted @ 2020-10-27 16:24 MQFLLY 阅读(85) 评论(0) 推荐(0)
摘要:P6786 GCDs & LCMs 数学推导 题意 给定一段序列$a$,要求从中找出一些数组成序列$b$满足: $b_i$是$b$中最大值或者存在一个位置$j$,使得$b_j > b_i$,且$b_i + b_j + gcd(b_i,b_j) = lcm(b_i,b_j)$ 并且希望这个$b$序列的 阅读全文
posted @ 2020-10-23 23:19 MQFLLY 阅读(151) 评论(0) 推荐(0)
摘要:GYM-100199H Cracking' RSA 数论,高斯消元求自由变元 题意 首先题目友好的给定一个$t$ ,再给定一个数$m$ 表示接下来有$m$ 个数,表示接下来的数字都由素数表中的前$t$个数组成。 从这$m$个数中选择一些子集,要求子集的元素乘积是完全平方数的子集的个数。 \[ 1 \ 阅读全文
posted @ 2020-09-23 19:50 MQFLLY 阅读(261) 评论(0) 推荐(0)
摘要:CodeForces-731F Video Cards 数论,分块 题意 给出一个长度为$n$的数组$a$ ,在数组中选择一个元素作为$leading$ 。 其他元素可以减去任意大小。 问最大的【改变后的数组和】是多少。 数组要求满足:除了$leading$ 外的元素都是$leading$ 的倍数 阅读全文
posted @ 2020-09-12 22:34 MQFLLY 阅读(192) 评论(0) 推荐(0)
摘要:HNOI 2002 跳蚤 容斥,莫比乌斯反演 题意 一只跳蚤目前站在无限长的绳索中央,给出一张卡牌,上面有$n+1$ 个自然数,其中最后一个数字为$m$ 。 跳蚤可以选择卡牌给的数字跳任意次,只要最终能够到达左边$1$ 单位即可。 现在给定$n,m$ ,问有多少张卡牌可以满足要求 \[ n,m\le 阅读全文
posted @ 2020-08-31 15:54 MQFLLY 阅读(129) 评论(0) 推荐(0)
摘要:HDU-4726 Mophues 莫比乌斯反演 题意 多个询问,求$[1,m],[1,n]$ 中有多少对数的$GCD$ 的素因子个数小于$p$ \[ n,m,p\leq 5\cdot 10^5 ,q\leq 5000 \] 分析 将题意用数学语言表示即求 \[ \sum_{i=1}^n\sum_{j 阅读全文
posted @ 2020-08-31 10:02 MQFLLY 阅读(164) 评论(0) 推荐(0)
摘要:Codeforces Round #665 (Div. 2) D. Maximum Distributed Tree 题意 给定一棵$n$ 个结点的树,对这棵树分配边权,使得这棵树的边权的乘积为$k$ ,且要求所有两点的简单路径边权之和最大。 \(k\) 以质因子的形式给出,有$m$ 个质因子 结果 阅读全文
posted @ 2020-08-22 17:30 MQFLLY 阅读(336) 评论(0) 推荐(0)
摘要:Codeforces Round #665 (Div. 2) C. Mere Array 题意 给定数组$a$ ,可以交换$a_i , a_j$ 当且仅当$Min | (a_i,a_j) $ ,其中$Min$ 为$a$ 数组的最小值 问能否通过交换使得数组$a$ 不降 分析 考虑需要交换的元素有哪些 阅读全文
posted @ 2020-08-22 16:07 MQFLLY 阅读(190) 评论(0) 推荐(0)
摘要:CF901B GCD of Polynomials 多项式 数论 题意 定义多项式的度$deg$ 为多项式的最高次数。对于多项式$A(x) = \sum_na_kxk$ 以及$B(x) = \sum_mb_kbk$ 有唯一的除法表示 \[ A(x) = B(x)\cdot D(x) + R(x) , 阅读全文
posted @ 2020-08-20 16:20 MQFLLY 阅读(304) 评论(0) 推荐(0)
摘要:nCr * pq 求该表达式末尾0的个数。 显然至于2 5 的因子个数有关。 考虑预处理出每个数的2,5的因子个数,并统计前缀和(题个的组合数其实是阶乘) int _2[maxn], _5[maxn]; ll _s2[maxn], _s5[maxn]; int _count(int x, int y 阅读全文
posted @ 2020-08-15 15:05 MQFLLY 阅读(119) 评论(0) 推荐(0)
摘要:int prime[maxn]; int vis[maxn]; int euler_sieve(int n) { int cnt = 0; vis[1] = 1; for (int i = 2; i <= n; i++) { if (!vis[i]) prime[cnt++] = i; for (i 阅读全文
posted @ 2020-08-11 20:23 MQFLLY 阅读(176) 评论(0) 推荐(0)
摘要:根据斐波那契数列的通项公式可以进行如下推导。 注意到后面是等比数列可以O(1)求出。还要注意的问题是 1 / sqrt(5) 在模意义下处理用二次剩余模板处理出。以及预处理组合数。 当然,直接这样写虽然复杂度上没问题但还会T 考虑以下优化: 1.由于c很大,计算A^c,B^c时用欧拉降幂减少快速幂。 阅读全文
posted @ 2020-08-11 17:53 MQFLLY 阅读(191) 评论(0) 推荐(0)
摘要:ll w; struct num { ll x, y; }; num mul(num a, num b, ll p) { num ans = { 0,0 }; ans.x = ((a.x * b.x % p + a.y * b.y % p * w % p) % p + p) % p; ans.y = 阅读全文
posted @ 2020-08-10 15:20 MQFLLY 阅读(206) 评论(0) 推荐(0)
摘要:给定 a ,b ,c , d , x, y 求上式 0⩽a,b,c,d⩽3×106,0<x,y⩽109,a⩽b,c⩽d.首先对问题转化为枚举质因子,计算为每个公共质因子贡献的问题。(由唯一分解定理容易想到)规模为O(log x + log y)乘积就转化成了和的形式 只需求出此式(指数)然后快速幂即 阅读全文
posted @ 2020-08-09 19:46 MQFLLY 阅读(177) 评论(0) 推荐(0)
摘要:给定 x ,y 问有多少个k元组使得其gcd = x, sigma = y , k随意 首先进行转化,相当于 有多少个k元组满足 gcd = 1,sigma = y / x 。 因此容易得出 y % x != 0 时,输出0 现在相当于计算有多少个gcd = 1 的组 使得sigma = y / x 阅读全文
posted @ 2020-08-08 19:00 MQFLLY 阅读(105) 评论(0) 推荐(0)
摘要:要求对一个数进行加法分解,问最多能分成多少个合数。 问最多的合数,那么结果必然是有 4, 6 , 9 组成 考虑 n % 4的情况即可。 主要是要想到其他合数都可以用4,6,9组成 int main() { int Q = readint(); while (Q--) { ll n = readll 阅读全文
posted @ 2020-08-08 09:52 MQFLLY 阅读(226) 评论(0) 推荐(0)
摘要:求n! 在base进制下的位数。 10进制下 Log10(x) 就是x的位数。 base进制下同理。 记得开double double pre[maxn]; void init() { pre[0] = log(1); for (int i = 1; i < maxn; i++) pre[i] = 阅读全文
posted @ 2020-08-07 23:15 MQFLLY 阅读(121) 评论(0) 推荐(0)
摘要:n <= 5e5 两种操作:1.询问 L ,R 能否通过修改一个数使得区间gcd为x 2. 修改某点的大小 首先联想到可以用线段树维护区间性质,单点修改。 如果判断1? 如果区间中所有数都是x的倍数,那么只需修改任意一个数变为x就可以。 如果区间中大于一个数不是x的倍数,由于仅仅能修改一次,所以肯定 阅读全文
posted @ 2020-08-07 09:28 MQFLLY 阅读(159) 评论(0) 推荐(0)