求余小技巧 码农场 » POJ 3641 Pseudoprime numbers 题解 《挑战程序设计竞赛》
// return (a * b) % m
LL mod_mult(LL a, LL b, LL m)
{LL res = 0;LL exp = a % m;while (b){if (b & 1){res += exp;if (res > m) res -= m;}exp <<= 1;if (exp > m) exp -= m;b >>= 1;}return res;
}
求余防止溢出
这个求余乘法的思想是,先将一个数用2进制表示:
bn表示b的二进制的第n个bit,当然,首个比特是从0开始算的。将a乘入括号中,得到:
由于bn要么是0要么是1,所以只需计算为1的部分就可以了,比如3*5:
每加一次就求一次余,这样每次加上去的都是小于m的余数,这样就不怕溢出了。由于每个bit都需要计算一次,所以复杂度是O(log(N))。
求余小技巧 码农场 » POJ 3641 Pseudoprime numbers 题解 《挑战程序设计竞赛》相关推荐
- 码农场 » POJ 2566 Bound Found 题解 《挑战程序设计竞赛》
本题用的是取尺法,是难得的好题,不过题目数据似乎有些问题,取尺法的复杂度为O(k*n),很明显应该TLE,但是却过了. 而且,本题是想加排序之后才采用的取尺法. #include <iostre ...
- POJ 3669-Meteor Shower [bfs] 《挑战程序设计竞赛》2.1
题目链接: POJ 3669 Meteor Shower 题目大意: 你在坐标原点, 只能在第一象限沿着x,y轴方向移动, 单位时间内一次移动一格.马上将要迎来一场流星雨, 也只会落到第一象限, 每颗 ...
- POJ 3713 Transferring Sylla 题解 《挑战程序设计竞赛》
为什么80%的码农都做不了架构师?>>> POJ 3713 Transferring Sylla三连通图:判断一个无向图是否三连通?3.5借助水流解决问题的网络流最大流刷个题报 ...
- POJ 1418 Viva Confetti 题解 《挑战程序设计竞赛》
为什么80%的码农都做不了架构师?>>> POJ 1418 Viva Confetti礼花:Confetti 是一些大小不一的彩色圆形纸片,人们在派对上.过节时便抛洒它们以示庆 ...
- POJ 1150 The Last Non-zero Digit 《挑战程序设计竞赛》
为什么80%的码农都做不了架构师?>>> POJ 1150 The Last Non-zero Digit超大组合数:求超大组合数P(n, m)的最后一个非零位.4.1更加复杂 ...
- POJ 3735 Training little cats 题解 《挑战程序设计竞赛》
为什么80%的码农都做不了架构师?>>> POJ 3735 Training little cats调教猫咪:有n只饥渴的猫咪,现有一组羞耻Play,由k个操作组成,全部选自: ...
- POJ 3608 Bridge Across Islands 《挑战程序设计竞赛》
为什么80%的码农都做不了架构师?>>> POJ 3608 Bridge Across Islands跨岛大桥:在两个凸包小岛之间造桥,求最小距离?3.6与平面和空间打交道的计 ...
- 《挑战程序设计竞赛》--初级篇习题POJ部分【动态规划】
关于基本的动态规划和经典的动态规划,在之前已经总结过了,可以温习一下: 传送门 这次是延续上次的<挑战程序设计竞赛>初级篇,总结部分poj上的练习题,主要是DP方面的练习题: 一.基础的动 ...
- 《挑战程序设计竞赛》--初级篇习题POJ部分【2.4 - 2.6】
这次是延续上次的<挑战程序设计竞赛>初级篇,总结部分poj上的练习题,主要是2.4 ~ 2.6部分: 导航 2.4 加工并存储的数据结构 优先队列 Sunscreen MooUnivers ...
最新文章
- 钉钉被小学生逼疯,拍片在线求饶哈哈哈哈
- 骄阳似火 细数史上数据中心火灾 如何才能重蹈覆辙?
- Oracle 无备份情况下的恢复--控制文件/数据文件
- c++ primer 19th 特殊工具与技术
- 使用ASP.NET MVC、Rabbit WeixinSDK和Azure快速开发部署微信后台
- Arch Linux配置gnome桌面
- 斐讯盒子T1_【YYF固件】夏杰语音实用版刷机固件及教程分享
- PowerBuilder GRID美化
- 百度SEO站群超简约实惠的个人简历模板源码
- 使用moviepy为视频添加字幕
- 【业界新闻】浪潮高端存储系统技术发展及展望(下篇)
- linux 搜狗输入法快捷键设置,Linux配置中文输入法(搜狗输入法)-Go语言中文社区...
- 如何使用 ELEMENTOR
- 下方点击出项上方对应的插件_sketch必备插件Craft功能详解(下)
- 04-项目立项:项目方案、可行性分析、产品规划、立项评审
- 一文搞懂Spring,堪称Spring源码终结者
- java 给pdf解密_PDF文件如何解密?分享一个简单的PDF解密方法
- python中可选参数如何指定_Python可选参数
- 借助github搭建自己的CDN服务
- 测试用例设计-等价类划分法