同餘方程 https://www.luogu.com.cn/blog/cicos/solution-p1082
ax≡1(modb)
#include<bits/stdc++.h>
#define rep(i,a,b) for(ll i=a;i<=b;++i)
#define per(i,a,b) for(ll i=a;i>=b;--i)
#define pb push_back
#define mem(a,b) memset(a,b,sizeof a)
using namespace std;
typedef long long ll;
static const ll maxn=2e5+5,mod=1e9+7;
int x,y;
void exgcd(ll a,ll b){
if(b==0){
x=1;
y=0;
return ;
}
exgcd(b,a%b);
ll temp=x;
x=y;
y=temp-(a/b)*y;
}
/*
ll exgcd(ll a,ll b,ll &x,ll &y) {
if(!b) {
x=1,y=0;
return a;
}
ll res=exgcd(b,a%b,y,x);
y-=a/b*x; ///x=x1,y=x1-a/b*y1 x1,y1代表下一狀態
return res;
}
*/
int main(){
ll a,b;
cin >> a >> b;
exgcd(a,b);
x=(x%b+b)%b;
cout << x;
return 0;
}
分數取餘 https://www.luogu.com.cn/problemnew/solution/P2613
c=a/b,求 c mod 19260817 的值
#include<bits/stdc++.h>
#define rep(i,a,b) for(ll i=a;i<=b;++i)
#define per(i,a,b) for(ll i=a;i>=b;--i)
#define pb push_back
#define mem(a,b) memset(a,b,sizeof a)
using namespace std;
typedef long long ll;
static const ll maxn=2e5+5,mod=19260817;
template<class T>
inline void read(T &x){
x=0;
int f=0;
char c=getchar();
while(!isdigit(c)){
f|=(c=='-');
c=getchar();
}
while(isdigit(c)){
x=(x<<3)+(x<<1)+c-'0';
x%=mod;
c=getchar();
}
if(f) x=-x;
}
int x,y;
void exgcd(ll a,ll b){
if(b==0){
x=1;
y=0;
return ;
}
exgcd(b,a%b);
ll temp=x;
x=y;
y=temp-(a/b)*y;
}
int main(){
ll a,b;
read(a);
read(b);
if(b%mod==0){
puts("Angry!");
return 0;
}
exgcd(b,mod);
x=(x%mod+mod)%mod;
cout << a*x%mod;
return 0;
}