calc(NOIP模拟赛Round 3)
原题:
D e s c r i p t i o n
给三个正整数n,m和p,求(n^1+...n^m) mod p。 Input
一行,三个整数n,m和p。 Output
输出答案。 S a m p l e I n p u t
2 2 5
S a m p l e O u t p u t
1
数 据 范 围
n,p<=10^8 m<=10^17 时 限
1s
首先看到m范围就知道是快速幂了对吧。
然后我们想想看。假如是平常的快速幂的话时间复杂度为O(M)
TLE了对吧,然后我们想想有没有LOG级别的算法,就是加法也做到LOG。
考场上寻找DP式去了。。
a^1+a^2+a^3+a^4=(1+a^2)(a^1+a^2);
所以。。以此类推
f[n]=(1+f[n>>1])%p*f[n>>1]%p;
但是n为奇数的时候显然无法得到这个式子
所以奇数时:
f[n]=f[n-1]+a^n(快速幂)
然后算法复杂度O(logm)
快多啦!
然后就是代码。。
注意!在这道题中所有的数据都要定义为 long long ,否则会挂掉!
就是因为考场上太弱了,写了个int都没发现。我的70分/(ㄒoㄒ)/~~。
下面贴代码
#include<iostream>
#include<cstdio>
using namespace std;
unsigned long long num[];
unsigned long long n,m,p;
unsigned long long ans;
unsigned long long work(unsigned long long x)
{
unsigned long long tmp=x;
unsigned long long qaq=;
int tt=;
while(tmp)
{
if(tmp&)qaq=(qaq*num[tt])%p;
tt++;
tmp>>=;
}
return qaq;
}
unsigned long long dfs(unsigned long long x)
{
if(x==)return n%p;
if(x==)return ;
if(x%==)return (dfs(x/)%p*(+work(x/))%p)%p;
else return (dfs(x-)%p+work(x)%p)%p;
}
int main(){
freopen("calc.in","r",stdin);
freopen("calc.out","w",stdout);
scanf("%lld%lld%lld",&n,&m,&p);
unsigned long long sum=,tot=;
num[]=n;
while(sum<m){
num[++tot]=(num[tot-]*num[tot-])%p;
sum<<=;
}
ans=dfs(m);
printf("%lld\n",ans);
fclose(stdin);
fclose(stdout);
}
calc(NOIP模拟赛Round 3)的更多相关文章
- 水(NOIP模拟赛Round #10)
题目描述: 小Z有一个长度为的数列.他有次令人窒息的操作,每次操作可以使某个数字或.他当然是希望这些数字的乘积尽量小了.为了简化题目,你只需输出操作完成后的数列即可. ———————————————— ...
- 小红帽的画笔(NOIP模拟赛Round 7)
又到了神奇的模拟赛时间~ 真是丧~ 好吧我们来看看题目 小红帽是Pop star上最著名的人类画家,她可以将任何画出的东西变成真实的物品.赋予她这样神奇能力的正是她手上的画笔. 小红帽每次作画时,都需 ...
- YYH的营救计划(NOIP模拟赛Round 6)
题目描述 “咚咚咚……”“查水表!”原来是查水表来了,现在哪里找这么热心上门的查表员啊!YYH感动的热泪盈眶,开起了门…… YYH的父亲下班回家,街坊邻居说YYH被一群陌生人强行押上了警车!YYH的父 ...
- 题(NOIP模拟赛Round #10)
题目描述: 有一张的地图,其中的地方是墙,的地方是路.有两种操作: 给出个地点,询问这个地点中活动空间最大的编号.若询问的位置是墙,则活动空间为:否则活动空间为询问地点通过四联通能到达的点的个数.如果 ...
- 大(NOIP模拟赛Round #10)
题目描述: 小Z有个n个点的高清大图,每个点有且只有一条单向边的出边.现在你可以翻转其中的一些边,使他从任何一个点都不能通过一些道路走回这个点.为了方便,你只需输出方案数对取模即可.当在两个方案中有任 ...
- bananahill(NOIP模拟赛Round 8)
题目描述 香蕉川由座香蕉山组成,第i座山有它的高度.小Z准备从左到右爬这里的恰好座香蕉山,但他不希望山的高度起伏太大,太过颠簸,会让本就体育不好的他过于劳累.所以他定义了爬山的劳累度是所有爬的相邻的两 ...
- 战斗机的祈雨仪式(NOIP模拟赛Round 7)
[问题描述] 炎炎夏日,如果没有一场大雨怎么才能尽兴?秋之国的人民准备了一场祈雨仪式.战斗机由于拥有操纵雷电的能力,所以也加入了其中,为此,她进行了一番准备. 战斗机需要给自己的Spear of Lo ...
- 魔法使的烟花(NOIP模拟赛Round 7)
[问题描述] 魔法森林里有很多蘑菇,魔法使常常采摘它们来制作魔法药水.为了在6月的那个奇妙的晚上用魔法绽放出最绚丽的烟花,魔法使决定对魔法森林进行一番彻底的勘探. 魔法森林分为n个区域,由n-1条长度 ...
- 灰姑娘的水晶鞋(NOIP模拟赛Round 7)
[问题描述] 传说中的水晶鞋有两种颜色:左边的水晶鞋是红色,右边的是蓝色,据说穿上它们会有神奇的力量. 灰姑娘要找到她所有的n双水晶鞋,它们散落在一条数轴的正半轴上,坐标各不相同,每双水晶鞋还有一个权 ...
随机推荐
- 解答室内定位技术新方向:蓝牙AoA定位,值得了解 ——概念了解
转载搜狐 室内定位一直被炒的非常火的黑科技,也是近年资本追逐的热点,市场上一直有众多宣称可以做到厘米级,米级精度定位的公司,但问题很多,无法大规模商用.近些年有很多人尝试使用蓝牙beacon方式做定位 ...
- Mybatis中updateByPrimaryKeySelective和updateByPrimaryKey区别
int updateByPrimaryKeySelective(TbItem record); int updateByPrimaryKey(TbItem record); 上面的是逆转工程生成的Ma ...
- python基础之继承实现原理、子类调用父类的方法、封装
继承实现原理 python中的类可以同时继承多个父类,继承的顺序有两种:深度优先和广度优先. 一般来讲,经典类在多继承的情况下会按照深度优先的方式查找,新式类会按照广度优先的方式查找 示例解析: 没有 ...
- <jsp:param>传参乱码问题
在添加参数的界面添加<%request.setCharacterEncoding("UTF-8");%> 实例代码: login_confirm.jsp <%@ ...
- P1395 会议(求树的重心)
P1395 会议 题目描述 有一个村庄居住着n个村民,有n-1条路径使得这n个村民的家联通,每条路径的长度都为1.现在村长希望在某个村民家中召开一场会议,村长希望所有村民到会议地点的距离之和最小,那么 ...
- 如何使用Idea导入jar包
技术交流群: 233513714 1.在idea底部找到Terminal,然后进入输入框,如下图所示 2.在输入框中输入 mvn install:install-file -D file=C:\Use ...
- Unicode字符图标
http://unicode-table.com/cn/#control-character
- C语言中强制类型转换总结
C语言中强制类型转换总结 ● 字符型变量的值实质上是一个8位的整数值,因此取值范围一般是-128-127,char型变量也可以加修饰符unsigned,则unsigned char 型变量的取值范围 ...
- 百度webuploader上传 1
百度webupload网址:http://fex.baidu.com/webuploader/ 引入js和css <script src="../../Content/webuploa ...
- rest_framework_jwt
安装配置 安装 pip install djangorestframework-jwt 配置 REST_FRAMEWORK = { 'DEFAULT_AUTHENTICATION_CLASSES': ...