1. 程式人生 > >數論初步———codeforces 7C 模板題!!!!

數論初步———codeforces 7C 模板題!!!!

問題介紹:

給方程Ax + By + C = 0. 其中A,B,C為已知, 求x,y。 若x,y是整數則輸出,否則輸出-1

問題分析:
拓展歐幾里得演算法的模板題。這個演算法在數論書或者網上都可以找到。
在我上一篇部落格中也有提到點選這裡
直接套結論,c 如果是gcd(a,b)的倍數則其整數解為x0cgy0cg,否則無整數解。
附上程式碼:

#include<stdio.h>
#include<string.h>
#include<algorithm>
#include<string>
using namespace std; #define ll long long const int N = 1e5+7; int n,t; long long ext_gcd(long long a,long long b,long long &x, long long &y) { if(!b) {x = 1; y = 0; return a;} else { long long r = ext_gcd(b,a%b,x,y); long long temp = x; x = y; y = temp - (a/b)*y; return
r; } } int main() { long long a,b,c,d,x,y; while(scanf("%lld%lld%lld",&a,&b,&c)!=EOF) { d = ext_gcd(a,b,x,y); if(c%d==0) printf("%lld %lld\n",x*(-c/d),y*(-c/d)); else printf("-1\n"); } return 0; }