模板:快速幂
来源:互联网 发布:怎么制作一个软件 编辑:程序博客网 时间:2024/06/05 03:43
是的我要痛心疾首的写一遍快速幂的模板……原本以为这玩意很简单的,然而事实证明……
板子都背错了还说啥?(实际上板子从一开始写的就不对……)
好的那我们开始吧。
————————————
勇者最近发现怪物们的行为异常了起来。
这其中异常的大概是积木怪,原本互相分散的他们竟然开始朝着一个方向去集合。
“莫非……”勇者想到了可怕的想法,那是三十年一次的。
“积木怪攻城!”
(瞎编题时间)
已知积木怪的数量为n,他们的个体攻击力为2,但是n个积木怪叠加起来的话,他们的总攻击力就会变成可怕的2的n次幂。
不过好在积木怪这种没脑子的家伙罗高了就会倒塌,经过古代贤者对于这种生物的考究,这种生物的攻击力始终不会超过1e9+7,因此你只需要把结果对1e9+7取模即可。
————————————
“其实积木怪挺善良的……要是换做别的组合怪的话,可能就要用到高精度了……”路由器一边嘟囔着,看着勇者用c++魔法语言自带的pow函数去清理小怪——毫不费事。
“等等,什么时候出来了这么大的怪……快算啊pow……”
【提示:您的体力值为0,已经自动回城】
“什么鬼?计算出来的结果这么大……”
回城后,pow憋了五六秒的时间才给出了结果,这令勇者十分的沮丧。
“没事,我们还有一招!”
路由器将勇者带到了照相馆那里,很轻易翻到了一本魔法书。
“快速幂”
“快速幂采用二分的思想,对于任意的k的n次幂,如果n为偶数,那么就等于k^(n/2)*k^(n/2),如果为奇数则再多乘以k即可。”
“利用递归的思想,我们很容易写出如下的代码。”
#include<cstdio>#include<cstring>#include<iostream>#include<cmath>#include<string>#include<algorithm>using namespace std;const long long q=1e9+7;long long qpow(long long k,long long n){ if(n==0)return 1; if(n==1)return k; long long p=qpow(k,n/2)%q; if(n%2==0)return p%q*p%q; else return p%q*p%q*k%q;}int main(){ int n; scanf("%d",&n); printf("%lld",qpow(2,n)%q); return 0;}
“怎样,是不是很简单啊!”
阅读全文
0 0
- 快速幂模板
- 矩阵快速幂模板
- 快速幂 ---模板
- 快速幂模板
- 快速幂模板
- 矩阵快速幂--模板
- 矩阵快速幂 模板
- 矩阵快速幂模板
- 矩阵快速幂模板
- 快速幂模板
- 快速幂小模板
- 【矩阵快速幂模板】
- 矩阵快速幂模板
- 快速幂模板
- 快速幂算法模板
- 矩阵快速幂模板
- 矩阵快速幂模板
- 整数快速幂【模板】
- 排序算法之冒泡排序
- vs2015搭建cocos2dx遇到的问题
- jsoup例子
- jquery的zTree
- 饿
- 模板:快速幂
- wireshark源码探索No.2---文档
- hibernate配置二级缓存三种方式
- 生产者---消费者模型之信号量
- 【Matlab】图像插值函数interp2理解
- 从零开始学_JavaScript_系列(37)——让浏览器支持es7特性
- pyspark写法总结
- Android多页面开发
- Ubuntu14.04下安装wechat(微信)