aboutsummaryrefslogtreecommitdiff
path: root/tests/sysy_lvX/081_exgcd.sy
blob: 3abdbcff1655a2074ddfb52cabdf33de7f0df84c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
int exgcd(int a,int b,int x[],int y[]) {
	if(b == 0) {
		x[0] = 1;
		y[0] = 0; 
		return a;			
	}
	else {
		int r = exgcd(b, a % b, x, y);		
		int t = x[0];
		x[0] = y[0];
		y[0] = (t - a / b * y[0]);
		return r;
	}
} 

int main() {
	int a = 7, b = 15, x[1] = {1}, y[1] = {1};
	exgcd(a, b, x, y);
	x[0] = (x[0] % b + b) % b;
	putint(x[0]);
	return 0;
}