提示
查看原帖
提示
239458
cmach_socket楼主2022/6/30 18:11

应该没人犯我这么傻的错吧

众所周知,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

可以保证得到整数

反正不会有人像我一样吧

2022/6/30 18:11
加载中...