FZU 1752 Quickmod Quickmulti
来源:互联网 发布:总舵主软件 编辑:程序博客网 时间:2024/06/14 19:24
题意 :Given A,B,C, You should quickly calculate the result of A^B mod C. (1<=A,B,C<2^63).
原始的Quickmod 和 Quickmulti
LL QuickMod(LL a,LL b,LL c){ LL ans = 1; while(b) { if(b&1) ans = ans*a%c; b >>= 1; a = a*a%c; } return ans;}LL QuickMulti(LL a,LL b,LL c){ LL ans = 0; while(b) { if(b&1) ans = (ans+a)%c; b >>= 1; a = (a+a)%c; } return ans;}
但是 由于这道题数据给的比较多并且比较大更容易溢出 所以需要进行优化 特别是QuickMod中的乘法 要进行改进 否则会溢出
QuickMulti中也要借鉴快速幂的思想进行优化
优化后的代码
LL multi(LL a,LL b,LL c){ LL ret = 0; while(b) { if(b&1) { ret += a; if(ret >= c) ret -= c; } a <<= 1; if(a >= c) a -= c; b >>= 1; } return ret;}LL Quick_mod(LL a,LL b,LL c){ LL ret = 1; while(b) { if(b&1) { ret = multi(a,ret,c); } b >>= 1; a = multi(a,a,c); } return ret;}这样才能过这道比较恶心的题 时间还是用了 780+ms
0 0
- FZU 1752 Quickmod Quickmulti
- fzu 1752
- FZU
- FZU
- FZU
- FZU
- FZU
- FZU
- FZU
- FZU
- FZU
- FZU
- FZU
- FZU
- FZU
- FZU
- FZU
- FZU
- 在Activity获取屏幕的宽高
- nginx limit_req限速设置
- 关于iOS多线程,你看我就够了(已更新)
- sql之join用法完全版
- p3143 二叉树的序遍历
- FZU 1752 Quickmod Quickmulti
- 背景图像位置 background-position
- 点我游戏~起点
- Atom飞行手册翻译: 2.14 小结
- 一道IOS面试题
- 分治算法--二分搜索
- hbase单机版初步了解
- 基础总结篇之二:Activity的四种launchMode
- 实习要用到前端知识了