题解 CF7C Line

虽然我在洛谷上没过

0.0..jpg

但是,我在CF上过了(滑稽

题目大意

给方程 \(Ax+By+C=0\).其中\(A\)\(B\)\(C\)为已知,求\(x\)\(y\)

Idea

拓展欧几里得算法的模板题.

该算法求出线性方程\(Ax + By = gcd(A, B)\)

然后,这个方程可进行转换:

\[Ax + By = gcd(A, B) \]

\[\to Ax + By = -\frac{C}{z}, -\frac{C}{z}= gcd(A, B) \]

\[\to Ax\ast z + By\ast z = C. \]

其中\(x\), \(y\)可以通过拓展欧几里得算法求出,

然后,我们只需要求出\(z\), 而\(z=-\frac{C}{gcd(A,B)}\);

所以, 最终答案\(x=x\ast -\frac{C}{gcd(A,B)}\) , \(y=y\ast -\frac{C}{gcd(A,B)}\);


以下给出拓展欧几里得的模板

inline int ecgcd(int a,int b,int &x,int &y){
	if(!b) {x=1; y=0; return a;}
	int d=exgcd(b,a%b,x,y);
	int z=x; x=y; y=z-y*(a/b);
	return d;
}

\(AC\) 程序自己写

posted @ 2019-09-01 06:36  云山乱  阅读(142)  评论(0编辑  收藏  举报