码迷,mamicode.com
首页 > 其他好文 > 详细

Codeforces7C 扩展欧几里得

时间:2016-03-23 19:54:59      阅读:142      评论:0      收藏:0      [点我收藏+]

标签:

思路:先将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;
}

 

Codeforces7C 扩展欧几里得

标签:

原文地址:http://www.cnblogs.com/Ritchie/p/5312396.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!