Codeforces7C 扩展欧几里得

来源:互联网 发布:看high类似软件 编辑:程序博客网 时间:2024/05/22 17:14
Line
Time Limit: 1000MS Memory Limit: 262144KB 64bit IO Format: %I64d & %I64u

Submit Status

Description

A line on the plane is described by an equation Ax + By + C = 0. You are to find any point on this line, whose coordinates are integer numbers from  - 5·1018 to 5·1018 inclusive, or to find out that such points do not exist.

Input

The first line contains three integers AB and C ( - 2·109 ≤ A, B, C ≤ 2·109) — corresponding coefficients of the line equation. It is guaranteed that A2 + B2 > 0.

Output

If the required point exists, output its coordinates, otherwise output -1.

Sample Input

Input
2 5 3
Output
6 -3

Source

Codeforces Beta Round #7

思路:先将A,B,C除以gcd(a,b),此时保证A,B已经互素,调用模板求出的特解x,y 只需乘上c即为答案

#include<cstdio>#include<cstdlib>#include<cstring>#include<cmath>using namespace std;void exgcd(long long a,long long b,long long &x,long long &y){    if(b){        exgcd(b,a%b,y,x);        y-=(a/b)*x;    }    else{        x=1;        y=0;    }}long long gcd(long long a,long long b){    return b==0?a:gcd(b,a%b);}int main(){    long long a,b,c;    scanf("%lld%lld%lld",&a,&b,&c);    int g=gcd(a,b);    if(c%g){        printf("-1\n");    }    else{        long long x,y;        exgcd(a,b,x,y);        printf("%lld %lld\n",-x*c/g,-y*c/g);    }    return 0;}

 

0 0
原创粉丝点击