Problem Address:http://poj.org/problem?id=1061
详细的推广欧几里得算法已经在http://blog.csdn.net/Human_CK/archive/2011/05/23/6439658.aspx写过了。
觉得找几道推广的欧几里得来做,最后找到了这道题。
很纯粹的题目。
很容易理解。
但是收获了点东西。
【代码】
【注意】
一般情况下,最后我们都是求出了x(这里用xx表示)。
但是当x为负时,我们必须把它化为正数。
那么怎么化为正数呢?
一个不定式 3x+4y=1。解得x=-1,y=1。
所以,所有解应该是:x=-1+4t,y=1-3t。这里的-1和1为上面的解。而4和3分别为y和x的系数。
令t=0,得到x=-1,y=1。
令t=1,得到x=3,y=-2。
把x=-1+4t,y=1-3t带进原式3x+4y=1可验证其是成立的。
而这里的4和3其实是4和3分别除以它们的最大公约数,即代码中 xx*=c/d 中的 c/d。
这样子,结果就出来了。
【P.S】
这样子推广的欧几里得的这部分简单应用算是学好了。
不过还有一个逆元的应用,接下来还要好好学习。