2023.1.31 闲话
我看差不多时机到了,可以发闲话了 .
plate_let 提出的一个模乘,好写且跑得飞快 .
原文:https://www.luogu.com.cn/blog/plateIet/modulo .
目标:对于定值 ,多组询问每次给一个 求 .
令 (小数部分),则
对于整数 ,令 ,其中 ,则
对于估计 ,取最近的整数 使得 ,最后的除法向下取整,可以证明结果是准确的 .
证明:
目标:取 ,答案向下取整时,对于 计算结果准确 .
设 ,其中 .
于是
保证没有问题的条件就是 ,因为 所以肯定对 .
证毕 .
也可以在第二个等号的结果后面直接感性理解得 ,结果相同 .
plate_let 的实现:
const int P = 998244353;
void calc(int n, int k, int a[]) {
unsigned long long p = (((unsigned __int128)k << 64) + P - 1) / P;
for(int i = 0; i < n; i++)
a[i] = (unsigned)a[i] * p * (unsigned __int128)P >> 64;
}
这份代码中具体的卡常技巧可以看原文,这里就不再说一遍了 .
终 .
以下是博客签名,正文无关
本文来自博客园,作者:yspm,转载请注明原文链接:https://www.cnblogs.com/CDOI-24374/p/17071803.html
版权声明:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议(CC BY-NC-SA 4.0)进行许可。看完如果觉得有用请点个赞吧 QwQ
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】