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

扩展欧几里得 exGCD

时间:2016-12-27 23:09:39      阅读:270      评论:0      收藏:0      [点我收藏+]

标签:xtend   ble   als   inline   lan   mem   return   esc   define   

Elementary Number Theory - Extended Euclid Algorithm

Time Limit : 1 sec, Memory Limit : 65536 KB 
Japanese version is here

Extended Euclid Algorithm


Given positive integers a and b, find the integer solution (xy) to ax+by=gcd(a,b), where gcd(a,b) is the greatest common divisor of a and b.

Input

a b

Two positive integers a and b are given separated by a space in a line.

Output

Print two integers x and y separated by a space. If there are several pairs of such x and y, print that pair for which |x|+|y| is the minimal (primarily) and x ≤ y (secondarily).

Constraints

  • 1 ≤ ab ≤ 109

Sample Input 1

4 12

Sample Output 1

1 0

Sample Input 2

3 8

Sample Output 2

3 -1

 

 1 #include <bits/stdc++.h>
 2 
 3 #define fread_siz 1024
 4 
 5 inline int get_c(void)
 6 {
 7     static char buf[fread_siz];
 8     static char *head = buf + fread_siz;
 9     static char *tail = buf + fread_siz;
10 
11     if (head == tail)
12         fread(head = buf, 1, fread_siz, stdin);
13 
14     return *head++;
15 }
16 
17 inline int get_i(void)
18 {
19     register int ret = 0;
20     register int neg = false;
21     register int bit = get_c();
22 
23     for (; bit < 48; bit = get_c())
24         if (bit == -)neg ^= true;
25 
26     for (; bit > 47; bit = get_c())
27         ret = ret * 10 + bit - 48;
28 
29     return neg ? -ret : ret;
30 }
31 
32 int exgcd(int a, int b, int &x, int &y)
33 {
34     if (!b)
35     {
36         x = 1;
37         y = 0;
38         return a;
39     }
40     int ret = exgcd(b, a%b, y, x);
41     y = y - x * (a / b);
42     return ret;
43 }
44 
45 signed main(void)
46 {
47     int x, y;
48     int a = get_i();
49     int b = get_i();
50     exgcd(a, b, x, y);
51     printf("%d %d\n", x, y);
52 }

 

@Author: YouSiki

 

扩展欧几里得 exGCD

标签:xtend   ble   als   inline   lan   mem   return   esc   define   

原文地址:http://www.cnblogs.com/yousiki/p/6227559.html

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