POJ 2142 The Balance(exgcd)

Posted new-ljx

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了POJ 2142 The Balance(exgcd)相关的知识,希望对你有一定的参考价值。

嗯...

 

题目链接:http://poj.org/problem?id=2142

 

AC代码:

技术图片
 1 #include<cstdio>
 2 #include<iostream>
 3 
 4 using namespace std;
 5 
 6 inline int _abs(int x){
 7     if(x < 0) return -x;
 8     return x;
 9 }
10 
11 inline void exgcd(int a, int b, int &g, int &x, int &y){
12     if(!b) { g = a; x = 1; y = 0;}
13     else { exgcd(b, a % b, g, y, x); y -= x * (a / b);}
14 }
15 
16 inline void work(int a, int b, int c, int &g, int &x, int &y){
17     exgcd(a, b, g, x, y);
18     x *= c / g;
19     int t = b / g;
20     x = (x % t + t) % t;
21     y = _abs((a * x - c) / b);
22 }
23 
24 int main(){
25     int a, b, c, x1, g, y1, x2, y2;
26     while(~scanf("%d%d%d", &a, &b, &c)){
27         if(!a && !b && !c) break;
28         work(a, b, c, g, x1, y1);
29         work(b, a, c, g, x2, y2);
30         if(x1 + y1 < x2 + y2) printf("%d %d
", x1, y1);
31         else printf("%d %d
", y2, x2);
32     }
33     return 0;
34 }
AC代码

 

以上是关于POJ 2142 The Balance(exgcd)的主要内容,如果未能解决你的问题,请参考以下文章

POJ 2142 The Balance(exgcd)

The Balance POJ 2142 扩展欧几里得

POJ-2142 The Balance(扩展欧几里得)

The Balance POJ - 2142

POJ2142 LA3185 HDU1356 The Balance同余方程

POJ 2142 The Balance 扩展欧几里得