基础数论
图一乐图一乐
这个作者很懒,什么都没留下…
展开
-
扩展lucas+容斥
扩展lucas+容斥给出一个方程x1+x2+x3+………xn=m现在给出两种制约。制约1:对于前解的前N1个数字,有制约xi<=a[i];制约2:对于从N1+1到N1+2的数字,有制约xi>=a[i]思路:对于制约2,比较好处理,在等式两边同时减去a[i]-1,使得有xi>=1,那么问题转化成了m-c个小球放进n个盒子的问题。然后对于制约1,我们想是不是也能通过一定的转化变成操作2,答案是肯定可以的,我们xi<=ai取对立面也就是xi>=a[i]+1,那么就是和制约2原创 2021-03-22 18:51:33 · 152 阅读 · 0 评论 -
C. Heretical … Möbius
const int N = 1e9;int p[1010], cnt;bool vis[1010];unordered_set<int> st;char s[205];ll pri[] = { 2,3,5,7,11,13 };vector<int> g[6];ll a[6];void get() { f(i, 2, 1009) { if (!vis[i])p[++cnt] = i; for (int j = 1;p[j] <= 1009 / i;j++原创 2021-03-15 19:41:14 · 253 阅读 · 0 评论 -
D. Two Pirates -2(经典概率dp倒着来)
描述:有n个宝贝,玩家1每次会拿剩下的宝贝中最贵的,玩家2则是随机选。思路:正着想不太好做。然后经典倒着来,其实这个也是有原因的,我们发现问题的关键在于玩家1想去拿上上一层最贵的宝贝时,宝贝可能被上一层的玩家2拿走了,这个其实就是要枚举玩家2上一层选的宝贝是比当前贵还是便宜也就是枚举左右侧。做法:倒着来,问题转化为向一个空的盒子放球,黑球是玩家1放的,白球是玩家2放的。dp[i][j]表示放完i个球后,从左往右数第j个球是黑色的。放黑球时,保证当前放入的求是最大的,那么插入最右边,其他的继承。放白球时,原创 2021-03-02 19:40:37 · 507 阅读 · 0 评论 -
P3211 [HNOI2011]XOR和路径(随机程序模型)
题意:给一张图,求从1号点到n号点路径上边的异或和的期望。分析与总结:显然这个n=100已经暗示这是个典型的随机程序模型,但是这里是求异或和的期望,异或?拆位算每一位的经过次数为奇数次的概率,然后求出这一位的贡献。哦,那没事了。列出依赖方程就好了,设f[i]为从当前节点的某一位走到终点n,这位进过奇数次的概率,如果邻边这位无,那么邻点也是求奇数,否则邻点求偶数。const int N = 105;double f[N][N];int n;void gauss_jordan(){ f(i, 0,原创 2020-12-17 09:01:50 · 113 阅读 · 0 评论 -
P3412 仓鼠找sugar II(树上期望,换根思想算贡献)
题意:给定一颗树,取树上任意两点为起点和终点(这两点可以相同),求从起点走到终点的概率。分析与总结:明显这道题与换根有密切的联系,先考虑固定1号结点为根节点,套路考虑维护一个每个结点向根走近一步的期望步数f[]。考虑一个结点x如下图所示,它的儿子是s1,s2,父亲节点是fa考虑返祖边,显然考虑返祖边f[x]=1+(d[x]−1)+sigma(f[son])f[x]=1+(d[x]-1)+sigma(f[son])f[x]=1+(d[x]−1)+sigma(f[son])其实这个式子可以退出f[x]原创 2020-12-09 11:41:52 · 125 阅读 · 0 评论 -
P4284 [SHOI2014]概率充电器(概率期望,换根dp,条件概率)
题意:给出一颗n个点,n-1条边的树,每个结点都有其初始化的被点亮的概率,每条边也有其可以通电的概率,求能被点亮的灯的数量的期望。分析与总结:通过这道树形dp,加深了对换根的理解,对于解决一些有依赖性关系的问题,我们可以考虑高斯消元/换根dp,主要套路为先一遍dfs求出每个结点只考虑子节点中贡献,那么作为根,它的答案就是和我们想求的一致的。然后考虑换根,建议画图理解,主要思想是将父节点中的贡献排除这个点的贡献(在这里是个条件概率公式),然后这个点依赖是它的子树和父节点连接的那一坨的贡献。Latex太烦了原创 2020-12-08 12:10:35 · 193 阅读 · 1 评论 -
P3750 [六省联考2017]分手是祝愿(期望概率,返祖模型)
题意:给n个灯,初始化下给出每个灯的状态,给n个开关,操作开关i会使得编号是i的约数的灯的状态翻转一次,现在有一个种算法,如果当前状态下可以操作k次及以下就能使所有灯熄灭,直接操作这个次数,游戏结束,否则随机按一次开关。分析与总结:首先根据初始化的状态,可以知道最少操作几次使得全部灯都灭,那就是从高位开始操作(这个很显然)。然后分析下,假设现在有num个灯是开的,那么显然可以画出下面这个返祖模型。根据这个状态转移图,可以列出方程f[i]=n/i∗1+(n−i)/n∗(1+f[i+1]+f[i])f[原创 2020-12-07 16:16:28 · 149 阅读 · 0 评论 -
CF248E Piglet‘s Birthday(期望概率好题)
题意:有n个架子,每个架子i上有aia_iai个蜂蜜罐,每次操作选择u上的k个罐子,吃每个罐子中的蜂蜜,把吃过的k个罐子放到v架子上,求每次操作过后,架子上的罐子全部被吃过的架子期望。分析与总结:显然又是个概率dp,显然题目的关注点在于该架子上还有多少被吃过的罐子,那么设计一个状态f[i][j]f[i][j]f[i][j],第i个架子上有j个未被吃过的罐子的概率。那么对于每次操作,v的状态是不用考虑的,考虑u的状态,首先枚举j表示当前u架子上有j个罐子未被吃过的概率,显然它是从上一层状态下拥有>=原创 2020-12-06 21:36:14 · 145 阅读 · 0 评论 -
P3232 [HNOI2013]游走(概率期望,高斯消元解决流量关系,随机函数变形)
题意:一个人初始化时在1号结点,给出一张双向联通图,每次这个人等概率的走到相邻的一个点,走到n结点游戏结束。 走过一条边时获得这条边的编号的分数。现在要求你给这些边编号使得最后他的期望值最低。分析与总结:显然要求每条边经过次数的期望,设边(u->x)的期望是exp(u−>x)exp(u->x)exp(u−>x),那么exp(u−>x)=exp(u)/d[u]+exp[x]/d[x]exp(u->x)=exp(u)/d[u]+exp[x]/d[x]exp(u−>x)原创 2020-12-06 21:19:25 · 161 阅读 · 0 评论 -
P3830 [SHOI2012]随机树(期望概率,二叉树套路枚举左右子树dp,期望转概率求和)
题意:有n个叶结点的二叉树,初始时只有一个根,每次等概率的从叶子结点中选一个岔开来。1.求叶子结点平均深度的期望2.树深度的期望分,定义根节点的深度为0。分析与总结:对于操作1比较好想,设f(x−1)f_(x-1)f(x−1)是有x-1个叶子结点时的平均深度的期望。那么f(x)=(f(x−1)∗(x−1)+f(x−1)+2)/xf(x)=(f(x-1)*(x-1)+f(x-1)+2)/xf(x)=(f(x−1)∗(x−1)+f(x−1)+2)/x,这个建议画图很快就能理解。发现每次的增量是f(x-1)+原创 2020-12-06 21:03:22 · 292 阅读 · 0 评论 -
P6835 [Cnoi2020]线形生物(期望概率,游戏冲关模型,分析流量关系)
题意:每个结点(1到n)都有一条连向下一个结点编号的边,又给出m条返祖 边,求从1号点到n+1号点的期望步数。分析与总结:这种有关流量关系的期望题,必定和度数有关系(往往和高斯消元也有联系,但这里显然不是)。设x点到y点的期望是exp[x−>y]exp[x->y]exp[x−>y],设点xxx的度数为dxd_xdx,那么这个走出这个点的期望步数是1/dx+1/dx∗(exp[y−>x]+1)1/d_x+1/dx*(exp[y->x]+1)1/dx+1/dx∗(exp[y−原创 2020-12-06 20:44:19 · 146 阅读 · 0 评论 -
P6046 纯粹容器(概率期望,期望转化成概率求和)
题意:给个长度为n的数组,保证数组中的数字两两不相等,每次操作选择两个相邻的数字进行决斗,大的胜利,小的踢出去,总共进行n-1次决斗。求原始位置上每个数能存活轮数的期望。数据 :1 4 2 3 5分析总结:拿到题目先不要瞎想,去找一些等价的隐藏条件。在这道题目中,首先想怎么计算答案,设能存活的轮数的期望是套路性地将期望转化成概率求和。这个可以画个期望x>=1的概率表理解下。然后设当前数是i,前一个比当前数大的数的坐标是prei,后一个比当前数大的数的坐标是sufi,当前数在这在当前死去的原创 2020-12-06 20:30:13 · 253 阅读 · 0 评论 -
P3292:幸运数字:倍增lca+倍增线性基
给定一颗树,求树上任意两点之间简单路径的最大异或和思路:树上任意两点的简单路径就是a到lca(a,b),再从lca(a,b)到b。学过lca的可以联想到这道题可以用倍增的思想来预处理每个结点往上走2^k步的路径的线性基。没错,这道题就是从这个角度来想,这样每次查询就可以快速的求得树上任意两点之间路径的线性基。 求解的过程就是倍增的跳,合并每次跳的点的线性基,当前这个点i往上跳k步,就合并当前这个点e[i][k]这个线性基。const int N = 2e4 + 5, M = 16;int dp[N原创 2020-11-29 20:49:28 · 105 阅读 · 0 评论 -
P3265 [JLOI2015]装备购买(线性基的本质)
线性基的本质:装备购买题意:给出n个m维的向量,如果一个向量可以通过若干其他向量来表示,则这个向量不用购买,给每个向量一个cost,求最小费用,使得每个向量都可以通过选择购买的向量表示,经典问题,可从线性基模板联想,只不过是把数的01异或变成了向量减法,按cost大小插入线性基中。const int N = 505;int n, m;template<class T>struct Vector { T a[N];//向量的维度 void init() { for (int i =原创 2020-11-19 16:12:06 · 96 阅读 · 0 评论 -
C. Sasha and Array(线段树+矩阵快速幂)
题意:给出一个序列a,给出两种操作,操作1:对a数组中[l,r][l,r][l,r]范围的内的数加上一个数x,操作2:查询[l,r][l,r][l,r]范围内的f[a[i]]f[a[i]]f[a[i]],其中f[x]f[x]f[x],是指第x个斐波那契数。思路:显然对于第一种操作,这里需要用到区间修改,所以要用到懒标记的线段树,对于第二种操作,可以很快地想到用矩阵加速递推式。于是开一个结点信息是矩阵的线段树,维护每个点的斐波那契和,懒标记写成转移矩阵的幂次,就可以非常清晰做出来这题。const int原创 2020-11-11 11:00:21 · 139 阅读 · 0 评论 -
F. Kuroni and the Punishment(随机化)
ll a[N],n;vector<ll> fac;set<ll> st;void get_fac(ll x){ for (ll i = 2;i*i <= x;i++) { if (x%i == 0) { fac.emplace_back(i); while (x%i == 0)x /= i; } } if (x > 1)fac.emplace_back(x);}int main(){#ifndef ONLINE_JUDGE原创 2020-11-06 09:08:55 · 130 阅读 · 0 评论 -
CF123E Maze(数学期望,dfs求子树和)
题意:给你一个n-1个结点的树,给出每个点作为入口和出口的概率。求从入口走到出口的期望步数。分析:当考虑一个点为入口,其他点如果在出口之前被dfs过,则出现2次,否则出现1次,当出口确定,一个点在之前被访问的概率是1/2(类似于插空,可以往前插,可以往后插)。现在考虑一个点为出口(它的概率是chu[u]),先dfs出子树中结点的个数和以子树中结点为入口的概率,这个子树对期望的贡献就是sz[i]∗sumpro[i]∗chu[u]sz[i]*sumpro[i]*chu[u]sz[i]∗sumpro[i]∗ch原创 2020-11-03 21:06:50 · 209 阅读 · 0 评论 -
E. Product Oriented Recurrence(乘法递推转化成幂的加法)
const int N = 1e4+5;void mul(ll c[][3], ll a[][3], ll b[][3]){ ll tmp[3][3] = {0}; f(i, 0, 2) f(j, 0, 2) f(k, 0, 2)tmp[i][j] = (tmp[i][j] + a[i][k] * b[k][j]) % (mod-1); memcpy(c, tmp, sizeof tmp);}void jzksm(ll a[][3],ll n){ ll tmp[3][3] = {原创 2020-10-14 09:53:00 · 84 阅读 · 0 评论 -
随机程序(数学期望,高斯约当消元法)
const int N = 105;double A[N][N];int n;void gauss_jordan(){ f(i, 0, n - 1) { int r = i; f(j, i + 1, n - 1) if (fabs(A[j][i]) > fabs(A[r][i]))r = j; if (fabs(A[r][i]) < eps)continue; if (r != i)f(j, 0, n)swap(A[r][j], A[i][j]); f(k,原创 2020-09-23 12:40:33 · 299 阅读 · 0 评论 -
poj3150细胞自动机(循环矩阵降维)
#include<bits/stdc++.h>#include<chrono>#include<random>#define f(i,a,b) for(register int i=a;i<=b;++i)#define ff(i,a,b) for(register int i=a;i>=b;--i)#define debug(x) cerr << #x << " : " << x << " " <原创 2020-09-23 10:27:45 · 129 阅读 · 0 评论 -
Recurrences UVA - 10870(经典矩阵加速递推关系)
ll d, n, m;void mul(ll c[][N], ll a[][N], ll b[][N]){ ll tmp[N][N] = { 0 }; f(i, 0, N - 1) f(j, 0, N - 1) f(k, 0, N - 1)tmp[i][j] = (tmp[i][j] + a[i][k] * b[k][j]) % m; memcpy(c, tmp, sizeof tmp);}void jzksm(ll a[][N]){ ll tmp[N][N] = { 0 };原创 2020-09-22 18:19:50 · 66 阅读 · 0 评论 -
B - Zhu and 772002(高斯消元解异或方程)
思路:完全平方数是指每个质因子次数均是偶数的数。现在要求n个数中选任意个使得组成得数是完全平方数,本质就是要求选的数中的每种质因子出现次数都是偶数次,而又给出最大因子是2000以内,也就是303个质因子,可以想到对每个质因子都需要满足一个异或方程(所有希望选的数对该质因子的亦或起来是0),也就是有303个方程,构造系数矩阵,用高斯消元求解。const int N = 305,M=2000;int Matrix[N][N];int Free_x[N]; //自由变元int X_Ans[N]; /原创 2020-09-22 14:56:34 · 143 阅读 · 0 评论 -
E. Deleting Numbers(分类讨论,交互题)
int p[N], cnt;bool vis[N + 1];void x_x(){ f(i, 2, N) { if (!vis[i])p[++cnt] = i; for (int j = 1;p[j] <= N / i;j++) { vis[p[j] * i] = true; if (i%p[j] == 0)break; } }}int query2(char c, int x){ printf("%c %d", c, x); cout <<原创 2020-09-20 22:41:25 · 86 阅读 · 0 评论 -
A - Apple Trees(经典矩阵快速幂解决递推问题)
思路:考虑转移方程f(n,0)=f(n−1,9)∗16+f(n−1,19)∗9+f(n−1,29)∗4+f(n−1,39)∗1f(n,0)=f(n-1,9)*16+f(n-1,19)*9+f(n-1,29)*4+f(n-1,39)*1f(n,0)=f(n−1,9)∗16+f(n−1,19)∗9+f(n−1,29)∗4+f(n−1,39)∗1,这是对于年龄为0岁的树而言,对于其他的<=44的树,其转移方程为f(n,i)=f(n−1,i−1)f(n,i)=f(n-1,i-1)f(n,i)=f(n−1,i−原创 2020-08-25 11:11:44 · 141 阅读 · 0 评论 -
F. Crossword Expert(组合数学,前缀期望)
题意:给n个问题,给出每个问题的解决时间ti,对于每个问题需要ti或ti+1个单位时间去解决,且要按给出的顺序解决,求在T时间内,对于解决问题个数的期望。思路:先假设每个问题时间消耗都是ti+1t_i+1ti+1,求出f[i]f[i]f[i](解决问题个数大于等于i的概率),然后利用f[i]−f[i−1]f[i]-f[i-1]f[i]−f[i−1]求出解决问题个数等于i的个数,并求其贡献。至于求f[i]f[i]f[i],可以这样考虑,对于前序i−1i-1i−1个问题,全部取ti+1t_i+1ti+1原创 2020-08-21 22:34:30 · 220 阅读 · 0 评论 -
D. Makoto and a Blackboard(dp,积性函数)
思路:考虑n的所有质因子,求其期望,再乘起来。考虑dp数组,第一维表示当前是第几步,第二维表示当前因子的次数,然后每次对每种次数进行更新,次数高的可以向低的等概率转移。const int N = 1e4+5;ll n, k;ll INV[65];ll f[N][65];ll cal(ll num, int cishu){ f(i, 0, cishu - 1)f[0][i] = 0; f[0][cishu] = 1; f(i,1,k) f(j, 0, cishu) { f[i][原创 2020-08-20 19:31:56 · 143 阅读 · 0 评论 -
luogoP2568 GCD(反演,分块)
const int N = 1e7 + 7;int p[N + 1],mob[N+1],sum[N+1], cnt;bool vis[N + 1];void x_x(){ mob[1] = 1; f(i, 2, N) { if (!vis[i]) { p[++cnt] = i; mob[i] = -1; } for (int j = 1;p[j] <= N / i;j++) { vis[p[j] * i] = true; if (i%p[j]原创 2020-08-04 21:31:18 · 171 阅读 · 0 评论 -
F. Guess Divisors Count(数论构造)
ll ju = 1e9,ju2=1e18;int p[1050], cnt;bool vis[1050];vector<ll> v,v2;const ll mp[22] = { 53,89,131,167,199,//每次询问最大的质数的后面一个 241,281,331,373,409, 443,479,521,569,601, 641 };void x_x(){ f(i, 2, 1000) { if (!vis[i])p[++cnt] = i;原创 2020-08-04 20:50:59 · 144 阅读 · 0 评论 -
Number Challenge CodeForces - 235E(莫比乌斯反演,约数函数性质)
学习地址总结:莫比乌斯反演的题目是很有套路的,要学会从枚举约数到枚举倍数的改变,另外这里的约数函数的等价式需要记下。const int N = 2e3+5;ll mo = 1ll<< 30;int p[N + 1], mob[N + 1], cnt,d[N][N];bool vis[N + 1];void x_x(){ mob[1] = 1; f(i, 2, N) { if (!vis[i]) { p[++cnt] = i; mob[i] = -1;原创 2020-08-04 12:11:36 · 127 阅读 · 0 评论 -
Sum HDU - 4407(容斥,二进制枚举,逆向思维)
题意:初始化下,给你1到n的n个数字。接下来进行m次操作,每次操作有两种类型,操作1:将求区间[l,r]之间的所有与p互质的数的和,操作2:将x位置上的数改成c。思路:直接求与p互质的数的和不好求,可以求出所有与p不互质的数的和再用区间和减去这个数。然后就对p进行质因子分解,并用二进制枚举每次每种可能的与p的公因数,并用容斥的思想和等差数列求和记录每个公因数的在[l,r]范围内贡献。对于操作2就很好处理了,每次进行操作1时,对所有在[l,r]范围内的修改进行判断加上与当前查询p互质的修改的值,如果被修原创 2020-08-02 15:31:34 · 124 阅读 · 0 评论 -
Square-free integers SPOJ - SQFREE(容斥,完全平方数)
思路:要求1到n不能被任意完全平方数整除的数,正难则反,等价求n减去1到n是完全平方数倍数的数的个数,然后容斥下。const int N = 1e7 + 5;bool vis[N + 1];int p[N + 1], cnt;void x_x(){ f(i, 2, N) { if (!vis[i])p[++cnt] = i; for (int j = 1;p[j] <= N / i;j++) { vis[p[j] * i] = true; if (i%p[j] =原创 2020-08-02 12:52:58 · 389 阅读 · 0 评论 -
Cheerleaders UVA - 11806(容斥+组合数学)
思路:正难则反。const int N = 505;ll C[N+1][N+1];void x_x(){ C[0][0] = 1; f(i, 1, N) { f(j, 0, i) { if (!j)C[i][j] = 1; else C[i][j] = (C[i - 1][j - 1] + C[i - 1][j]) % mod; } }}int main(){ //freopen("in.txt", "r", stdin); int t; int n, m原创 2020-08-01 19:28:12 · 163 阅读 · 1 评论 -
The Lottery UVA - 10325(容斥,二进制枚举)
题意:给m个数字,求1到n中不能被m个数字中任意一个数字整除的数的个数。int a[20];int main(){ //freopen("in.txt", "r", stdin); ll n, m; while (cin >> n >> m) { f(i, 1, m)scanf("%d", &a[i]); ll ans = 0; f(i, 1, (1 << m) - 1) { int cot = 0; ll LCM = 1原创 2020-08-01 10:46:35 · 73 阅读 · 0 评论 -
Mophues HDU - 4746(莫比乌斯反演,整除分块)
const int N = 5e5 + 5;int mob[N + 1], p[N + 1], num[N + 1],sum[N+1][20],cnt;bool vis[N + 1];void x_x(){ mob[1] = 1; f(i, 2, N) { if (!vis[i]) { p[++cnt] = i; num[i] = 1; mob[i] = -1; } for (int j = 1;p[j] <= N / i;j++) { vis原创 2020-07-31 21:42:17 · 96 阅读 · 0 评论 -
Big Event in HDU HDU - 1171(母函数)
mdzz,不知道为什么最后判断系数>0不行,要用非等于0。/*痛みを受け取れ,痛みを知れ*/#include<bits/stdc++.h>#define f(i,a,b) for(register int i=a;i<=b;++i)#define ff(i,a,b) for(register int i=a;i>=b;--i)#define debug(x) cerr << #x << " : " << x << " "原创 2020-07-29 19:33:01 · 72 阅读 · 0 评论 -
Big Event in HDU HDU - 1171(母函数)
const int N = 305;int num[18];ll a[N+1],b[N+1];void x_x(){ a[0] = 1; f(i, 1, 17)num[i] = i * i; f(i, 1, 17) { int now = num[i]; for (int j = 0;j <= N;j+=now)//每个母函数中的系数 { for (int k = 0;k + j <= N;k++)//更新全局系数 b[k +j] += a[k];原创 2020-07-29 17:56:32 · 66 阅读 · 0 评论 -
Holding Bin-Laden Captive! HDU - 1085(母函数)
const int N = 8010;bool vis[N];int main(){ //freopen("in.txt", "r", stdin); int a, b, c; while (cin >> a >> b >> c) { if (a == 0 && b == 0 && c == 0)break; memset(vis, false, sizeof vis); f(i, 0, a)vis[i] = tr原创 2020-07-29 16:56:02 · 93 阅读 · 0 评论 -
Ignatius and the Princess III HDU - 1028(母函数)
const int N = 125;ll a[N+1], b[N+1];//b临时数组void x_x(){ a[0] = 1; f(i, 1, N)//枚举1`N每一个数的母函数 { for (int j = 0;j <= N;j += i)//取出每一个数的母函数的每一个数 { for (int k = 0;k + j <= N;k++)//系数更新 b[k + j] += a[k]; } f(j, 1, N) { a[j] = b[j];原创 2020-07-29 14:38:07 · 72 阅读 · 0 评论 -
GCD of Sequence(数论,组合数学)
思路:对于直接求gcd等于d的情况不太好处理,按照数论的思维,考虑求出gcd为d以及d的倍数的情况,然后再将结果删去d的倍数的情况。首先用一个数组存储每一个出现的次数。然后枚举i及i的倍数,求出所给的数组中有几个数是i及i的倍数,记为cur,对于一个数组要使得gcd是d或d的倍数,那么每一个数都要是d或d的倍数,这时n-cur为数组中不符合条件的个数,如果这个个数大于k,表示无论如何都无法修改。等于k,表示正好可以将不满足的数改成满足的数,组合数为numknum^knumk,其中num为m/i,及m范围内d原创 2020-07-28 11:50:23 · 213 阅读 · 0 评论 -
HDU1695(莫比乌斯反演入门题)
思考过程:题目给出a,b,c,d,k,而又说了,a,c在这里全部为1,也就是求1<=x<=b,1<=y<=d,gcd(x,y)=k1<=x<=b,1<=y<=d,gcd(x,y)=k1<=x<=b,1<=y<=d,gcd(x,y)=k的对数。首先,根据数论选手的敏感性,可以转化为1<=x<=b/k,1<=y<=d/k,gcd(x,y)=11<=x<=b/k,1<=y<=d/k,gcd(原创 2020-07-24 11:49:44 · 98 阅读 · 0 评论