2 条题解
-
1
引入一个定理:Bezout定理
对于任意整数 存在一对整数,满足
证明:
在欧几里得算法的最后一步,即时,显然有一对整数, ,满足
若 则.
假设存在一对整数,满足 ,因为$b*x+(a mod b)*y=b*x+(a-(a/b)*b)*y=a*y+b*(x+(a/b)*y)$ 所以令
此时的便满足 逆推即可得到一组特解
将 变成最小正整数便得出答案
#include<bits/stdc++.h> #define ll long long using namespace std; ll a,b,x,y; ll exgcd(ll a,ll b,ll &x,ll &y) { if(b==0){ x=1,y=0; return a; } ll ans=exgcd(b,a%b,x,y); ll z=x; x=y; y=(z-y*(a/b)); return ans; } int main() { scanf("%d%d",&a,&b); exgcd(a,b,x,y); cout<<(x % b + b) % b; }
信息
- ID
- 204
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- 4
- 标签
- 递交数
- 32
- 已通过
- 19
- 上传者