首页 > 其他分享 >64 位整数乘法取模

64 位整数乘法取模

时间:2023-02-06 11:13:53浏览次数:45  
标签:取模 误差 bmod 0.5 times 64 ull 乘法

\((a\times b)\bmod p\),\(a,b<p\leq 10^{18}\)

不说龟速乘了。

\[(a\times b)\bmod p=a\times b-\left\lfloor\frac {a\times b}{p}\right\rfloor\times p=\left(a\times b-\left\lfloor\frac {a\times b}{p}\right\rfloor\times p\right)\bmod 2^{64} \]

关键在于算 \((\lfloor\frac {a\times b}{p}\rfloor)\bmod 2^{64}\)

考虑用 long double 算出 \(\dfrac ap\times b\)

考虑精度误差,\(\dfrac ap\in [0,1)\),因此所以有位都用于保存小数位,精度误差为 \((-2^{-64},2^{-64})\),乘 \(b\) 后误差最多为 \((-0.5,0.5)\),加上 \(0.5\) 后为 \((0,1)\),取整后为 \(\{0,1\}\),再乘上 \(-p\),误差为 \(\{0,-p\}\)。注意到如果误差为 \(-p\),那么结果将为负,取模后是一个极大的值,所以只需判断结果是否在 \([0,p)\) 中即可确定误差。

ull mul(ull a, ull b, ull p){
	ull res=a*b-(ull)((long double)a/p*b+0.5L)*p;
	if(res<p) return res;
	else return res+p;
}

标签:取模,误差,bmod,0.5,times,64,ull,乘法
From: https://www.cnblogs.com/pref-ctrl27/p/17094763.html

相关文章

  • base64ToMutipartFile(Base64转换为MutipartFile)
    packagecom.education.common.utils;importorg.springframework.web.multipart.MultipartFile;importsun.misc.BASE64Decoder;importjava.io.*;/***@author:......
  • 【UVA1645】Count
    找递推式。设\(f_i\)为\(i\)个节点的满足要求的树的数量,由于同一深度下每个节点子树相同,那么也就是说,根节点的若干个儿子都要分到同样的节点数。设总共有\(m\)个儿......
  • Fix error - processing package linux-headers-6.0.0-kali6-amd64 (--configure)
    Fixerror-processingpackagelinux-headers-6.0.0-kali6-amd64(--configure)Issue:Settinguplinux-headers-6.0.0-kali6-amd64(6.0.12-1kali1).../etc/kernel/......
  • shell使用嵌套循环跟单层循环打印9×9乘法表
    嵌套循环  单层循环加条件控制语句 ......
  • x64 APP栈回溯原理
    [原创]关于X64程序中RUNTIME_FUNCTION,UNWIND_INFO,UNWIND_CODE结构理解  2021-2-319:27  4012X64程序会生成一个Pdata段,用于记录每个函数的栈帧和异常信息,......
  • 64爬取b站,微博,ai问答等数据写入excel
    #功能1:获取手机号归属地#功能2:查询天气#功能3:查询百度热搜#功能4:查询微博热搜#功能5:查询b站#功能6ai问答(在这用不了涉及网站逆向写在另外一个py模块,没写入到......
  • win10专业版64位自动登录问题
    试一下直接使用注册表修改:1、在运行中执行regedit打开注册表;2、浏览到如下路径:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsNT\CurrentVersion\Winlogon3、在右......
  • #yyds干货盘点# LeetCode程序员面试金典: 递归乘法
    题目:递归乘法。写一个递归函数,不使用*运算符,实现两个正整数的相乘。可以使用加号、减号、位移,但要吝啬一些。示例1:输入:A=1,B=10输出:10示例2:输入:A=3,B=4......
  • base64文件前端下载
    遇到需要下载cer格式的证书文件时,后台获取base64字符串,然后根据以下的工具类,进行下载。其他格式的文件,修改后缀名即可。varbase64File="";    downloadFileByB......
  • 13. CTFshow 反序列化 web164
    PHP反序列化字符串逃逸,不难,但是有点绕。奈何自己太菜,又不懂PHP代码,磨蹭了半天,才搞懂。如有不对的地方还望斧正。一、代码index.php<?phperror_reporting(0);session......