社区讨论

求问关于光速乘的正确性

学术版参与者 5已保存回复 20

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
19 条
当前快照
1 份
快照标识符
@mc30lbkx
此快照首次捕获于
2025/06/19 14:43
8 个月前
此快照最后确认于
2025/06/20 15:34
8 个月前
查看原帖
rt,网上这样的光速乘代码
CPP
long long mul(long long a, long long b) {
	long long rt = a *b - ((long long)((long double)a / mod * b + 0.5)) * mod;
    return rt < 0 ? rt + mod : rt;
}
在同样的溢出次数下,正确性是可以保证的
但是,如果极端情况
前面的ab>LLONG_MAXa*b>LLONG\_MAX ,后面那部分却没有超出
aba*b就会减少LLONG_MAX+1LLONG\_MAX + 1
我们得到的差值是否会变为
原差值LLONG_MAX1原差值-LLONG\_MAX - 1
那这能一样吗?

回复

20 条回复,欢迎继续交流。

正在加载回复...