快速幂模板(病毒)
来源:互联网 发布:大数据text下载 编辑:程序博客网 时间:2024/06/17 13:54
快速幂模板(病毒)
快速幂并不陌生,就不多说了,嗯。
直接上题。
题目描述
2015年1月1日,国际卫生组织公布了一种新型病毒CAI,其复制能力极强,会使人的记忆能力严重衰退。
在每 1 秒内,一个病毒会分身出 N 个病毒(本体不计),它们和本体拥有着同样的能力,如果 N=4,在第一秒初有 1 个病毒本体,第一秒末分裂出 4 个,那么第一秒末有 5 个,它们在第二秒末会再分裂 5*4 =20个,那么加上最开始的,第二秒末就有 25 个。
为了抑制这种可怕的病毒,清华大学的医学研究人员经过认真研究这种病毒的基因,发明了一种新型青霉素注射液,能有效的消灭这种病毒。人体只需要注射一次这种青霉素,就可以终身免疫。这种青霉素杀毒的前提是:当病毒的数量必须达到或者超过 P 个(对人体开始有害),药力才会自动发挥作用——瞬间全部消灭 P 个病毒。那么,在第 M 秒末,环境中还有多少病毒呢?(注,第一秒初开始就注射了青霉素)
输入格式
输入数据只有一行,为 3 个整数 N、M 和 P,其含义如题目描述(初始时,只有一只病毒)。
输出格式
输出数据只有一行,为第 M 秒最后剩余的病毒数目。
样例数据 1
输入
4 3 3
输出
2
样例数据 2
输入
10000 1000 1
输出
0
备注
【样例1说明】
第一秒的病毒分裂出 4 个,加上本体就是 5 个,消灭三个还剩两个。
第二秒的病毒分裂出 2*4=8 个,加上两个本体就是 10 个,药力发挥 3 次,消灭了 9 个,还剩一个。
第三秒剩下的那个分裂出 4 个,加上本体就是 5 个,药力发挥一次消灭三个,还剩两个。
【样列2说明】
只要有 1 个病毒,药力就发挥杀毒功能,显然没有病毒能活下来。
【数据范围】
对于 1/3 的数据:M≤100000;
对于 2/3 数据:1≤N,P≤230,1≤M≤1152921504606846976;
对于 3/3 数据:1≤N≤230,1≤P≤260,1≤M≤1152921504606846976
其实就是(n+1)^m%p,但n,m,p取值范围都很大,所以用快速幂。
#include<iostream>#include<cstdlib>#include<cstdio>#include<cstring>#include<string>#include<ctime>#include<cmath>#include<algorithm>#include<cctype>#include<iomanip>using namespace std;long long n,m,p;inline long long ksc(long long x,long long y){ long long ans=0; while(y>0) { if(y&1) ans=(ans+x)%p; //同样为了节省时间,用了快速乘。 y=y>>1; x=(x+x)%p; } return ans;}inline long long ksm(long long x,long long y){ long long ans=1; //注意快速幂时,初始化ans为1。 while(y>0) { if(y&1) ans=ksc(ans,x); y=y>>1; x=ksc(x,x); } return ans;}int main(){ cin>>n>>m>>p; cout<<ksm(n+1,m); return 0;}
。。。。。就这样。
——我认为return 0,是一个时代的终结。
- 快速幂模板(病毒)
- [复习]快速幂加强(快速幂+快速乘) 病毒
- 病毒分裂(分治+快速幂)
- 快速幂 (模板)
- 快速幂(模板)
- 快速幂(模板)
- 【二分快速幂】病毒分裂
- 快速幂,矩阵快速幂(模板)
- 矩阵快速幂(模板)
- 数字快速幂(模板)
- 矩阵快速幂 (模板)
- 快速矩阵幂(模板)
- 快速幂模板(c)
- HDU 2065 "红色病毒" 问题(二分快速幂)
- hdu 2065 "红色病毒"问题(快速幂)
- 病毒侵袭(ac自动机模板)
- HDU 2065 "红色病毒"问题 (快速幂)
- HDU2065 "红色病毒"问题 【快速幂】
- A. Unimodal Array(段增减性
- springMvc无法访问静态文件
- 复选框选中事件
- python3.6 安装builtwith模块
- Asteroids!
- 快速幂模板(病毒)
- CLion,debug模式程序正常运行,run模式下出现停止运行
- 一个小白对oop c++ 访问private内容的理解
- ScrollView嵌套ViewPager冲突
- 头文件引用中<>与“”的区别
- MySQL Cluster 7.3.7+CentOS7集群配置入门 MySQL双管理节点配置入门
- 网页小知识---onblur,onfocus和表单提交的两种方式
- JavaMath方法、服务器与Tomcat安装与配置步骤
- QT 4.6.3 移植详细步骤(适合初学者)