https://www.luogu.com.cn/problem/P5656
求解:
- 有解充要条件:令 d = gcd ( a , b ) , c m o d d = 0 d=\gcd(a,b),c\bmod d=0 d=gcd(a,b),cmodd=0
- exgcd,背吧
int exgcd(int a, int b, int &x, int &y) {
int d=a;
if(b==0) x=1, y=0;
else {
d=exgcd(b, a%b, y, x);
y-=a/b*x;
}
return d;
}
- 合法解:令 t = c / d t=c/d t=c/d,使 x = x × t , y = y × t x=x\times t,y=y\times t x=x×t,y=y×t
- 任意解:令 p = b / d , q = a / d p=b/d,q=a/d p=b/d,q=a/d,则 x = x + k p , y = y − k q x=x+kp,y=y-kq x=x+kp,y=y−kq
然后剩下就是奇怪判断了
例题:ABC315G
https://atcoder.jp/contests/abc315/tasks/abc315_g
给 x , y x,y x,y 的范围变成 [ 1 , n ] [1,n] [1,n]
写的时候都不想看,反正到时候多手推,多判断,多拍拍即可
多对拍,个人感觉挺好拍的