应该没人犯我这么傻的错吧
众所周知,ap+bq=c的解是由ap+bq=gcd(a,b)得到的
将ap+bq=gcd(a,b)两边同时除以gcd(a,b),再乘上c,便能得到线性同余方程的解
于是我很自然地写出了这种式子:
p=p/gcd(a,b)*c;
乍一看没有什么问题
提交80分
但是它真的很有问题啊
在C++中,/是整除的意思
对于p,在除以GCD(a,b)不一定会为整数,剩余的小数部分会被舍弃
在一般乘法中,由于c%GCD(a,b)=0,这一部分小会在乘以c的过程中被乘回来
但是在c++中,这一部分小数已经被舍弃了,乘上c就是另外一个结果了
正确的写法:
p=c/gcd(a,b)*p
可以保证得到整数
反正不会有人像我一样吧