同余方程 (mod.cpp/c/pas) 【问题描述】 求关于 x 的同余方程 ax ≡ 1 (mod b)的最小正整数解。 【输入】 输入文件为 mod.in。 输入只有一行,包含两个正整数 a, b,用一个空格隔开。 【输出】 输出文件为 mod.out。 输出只有一行,包含一个正整数 x 0 ,即最小正整数解。输入数据保证一定有解。 【输入输出样例】 mod.in 3 10 mod.out 7 【数据范围】 对于 40%的数据,2 ≤b≤ 1,000; 对于 60%的数据,2 ≤b≤ 50,000,000; 对于 100%的数据,2 ≤a, b≤ 2,000,000,000。 #include <iostream> #define ll long long using namespace std; ll a,b,x,y; ll extended_gcd(ll a,ll b,ll &x,ll &y) { if (!b) { x=1; y=0; return a; } else { ll ans=extended_gcd(b,a%b,x,y); ll t=x; x=y; y=t-(a/b)*y; return ans; } } int main() { cin>>a>>b; ll ans = extended_gcd(a, b, x, y); if (ans!=1) cout<<"No answer"<<endl; else { x=x%b; while (x<0) x+=b; cout <<x<<endl; } return 0; } // 3 10