(a*b)%c 小的技巧
来源:互联网 发布:淘宝怎么看过期订单号 编辑:程序博客网 时间:2024/04/26 06:48
(a*b)%c这个问题看上去好简单啊。
当然我们不是来说这么简单的问题了。你想一想,我们会不会遇到这样的情况,a是__int64 ,b也是__int64 当两个数足够大的时候我们直接相乘的就会出现__int64越界的情况,结果就会错误。
所以我们今天记录一下解决这种问题的方法。不要让这些小的问题妨碍我们来做大的问题。
这里用到了2进制数,和位运算。当然不是转化。只要你会能理解就行
我们先来这样处理。
1。我们分别将a,b对c取模。
2。这里不会的看一下有关位运算的知识。这里我也不知道该怎么说了,先看看程序吧。我把程序中的代码注释加的好好的。
__int64 mult_mod(__int64 a,__int64 b,__int64 c){ a%=c; b%=c; __int64 ret=0;//ret记录最终的结果 while(b)//判断不是不是为0了 { if(b&1)//如果b的二进制中的最后一位为1 那么加上a{ret+=a;ret%=c;} a<<=1;a%=c;//a随着b中二进制位数而扩大每次扩大两倍。 b>>=1;//b来缩小两倍 去掉最后一位 因为当前最后一位我们用完了, } return ret;}
好了!
这个会二进制的应该一看就懂,不会的大概不好理解,我的表达能力有限,只能这样了。
感谢自己坚持。
1 0
- (a*b)%c 小的技巧
- a^b%c 小技巧
- java小测试-A+B>C
- b*b<4*a*c出现的
- c语言小的知识点int* a[5] int (*b)[5]
- HDOJ 继续水题,杭电2057 ,A+B again题目,关于进制输出的格式小技巧
- hdu2096 小明A+B(C语言)
- hdu2096 小明A+B(C语言)
- 【小明A+B】
- 小明A+B
- 小明A+B
- 小明A+B
- 小明A+B
- 小鑫a+b
- 小明A+B
- 小明A +B
- 使用链接元素A的小技巧
- 如何解决 a+b >c 和 a*b 和 a-b 的 integer overflow 问题
- 如何让IIS支持Apache .htaccess 的重写规则
- 纯CSS3文字效果推荐
- uva 10020- Minimal coverage (贪心思想 简单区间覆盖)
- 单链表节点的查找
- ZOJ-1256
- (a*b)%c 小的技巧
- LINUX下,编程自学八:守护进程daemon
- CentOS 修改yum源为国内源
- 自动化测试学习之路
- 抽象工厂模式
- 深入理解Java内存模型
- MySql入门级程序:插入、更新、删除
- eclipse git插件简单使用
- ARM RO,RW和ZI