數論初步———codeforces 7C 模板題!!!!
阿新 • • 發佈:2019-02-10
問題介紹:
給方程Ax + By + C = 0. 其中A,B,C為已知, 求x,y。 若x,y是整數則輸出,否則輸出-1
問題分析:
拓展歐幾里得演算法的模板題。這個演算法在數論書或者網上都可以找到。
在我上一篇部落格中也有提到點選這裡
直接套結論,c 如果是的倍數則其整數解為,否則無整數解。
附上程式碼:
#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;
}