http://acm.hdu.edu.cn/showproblem.php?pid=1576
题目就不详述了。
上自己在做的过程中学到的东西以及某些知识点。
1.A%B=n----->可以有两种转化:A=BX+n; n=A-A/B*B;
2.拓展GCD现在可以说自己比较理解了吧。关于解的条件,多组解的求法等等。
这道题自己崩溃了好久原因在于别人的题解推得 Bx-9973y=n 然后直接extend_gcd(B,9973,x,y);明明是-9973,其实可以作一个转化
求出来的y提取负号,把负号加在9973上面就OK了。。。
并且这题只需要用到x的值,所以用y的值代入果然就错了。。。。。
自己学到的这个技巧可以处理extend_gcd负数的情况,相似的原理,~~~~~~~
3.最后是小注意,用extend_gcd求得的x可能为负数,可以用题解告诉的那种方法:((nx%9973)+9973)%9973转化 或直接
按自己的思路 n(x+9973)%9973; 这就是拓展gcd上其余组解(x0+kb',y0-ka');