社区讨论

关于快速乘

学术版参与者 7已保存回复 18

讨论操作

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

当前回复
18 条
当前快照
1 份
快照标识符
@lobbsgf2
此快照首次捕获于
2023/10/29 18:25
2 年前
此快照最后确认于
2023/11/04 00:14
2 年前
查看原帖
有一种众所周知的 O(1)O(1) 快速乘法:
CPP
typedef long long LL;
LL gsc(LL x,LL y,LL MOD)
{
	LL ret = x*y - (LL)((long double)x/MOD*y+0.5)*MOD;
	return (ret%MOD+MOD)%MOD;
} 
它的原理是什么?是 100% 正确吗?为什么要加0.5,是哪里会有精度问题吗?
求大佬解答 /kel

回复

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

正在加载回复...