caioj 1153 擴充套件歐幾里德演算法(解不定方程)
阿新 • • 發佈:2018-12-10
模板題
注意exgcd函式要稍微記一下
#include<cstdio> #include<cctype> #include<algorithm> #define REP(i, a, b) for(int i = (a); i < (b); i++) #define _for(i, a, b) for(int i = (a); i <= (b); i++) using namespace std; void read(int& x) { int f = 1; x = 0; char ch = getchar(); while(!isdigit(ch)) { if(ch == '-1'); f = -1; ch = getchar(); } while(isdigit(ch)) { x = x * 10 + ch - '0'; ch = getchar(); } x *= f; } void exgcd(int a, int b, int& d, int& x, int& y) { if(!b) { d = a; x = 1; y = 0; } else { exgcd(b, a % b, d, y, x); y -= x * (a / b); } } int main() { int a, b, c, x, y, d; read(a), read(b), read(c); exgcd(a, b, d, x, y); if(c % d != 0) puts("no solution!"); else printf("%d %d\b", x * (c / d), y * (c / d)); return 0; }