原题:

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)的更多相关文章

  1. 水(NOIP模拟赛Round #10)

    题目描述: 小Z有一个长度为的数列.他有次令人窒息的操作,每次操作可以使某个数字或.他当然是希望这些数字的乘积尽量小了.为了简化题目,你只需输出操作完成后的数列即可. ———————————————— ...

  2. 小红帽的画笔(NOIP模拟赛Round 7)

    又到了神奇的模拟赛时间~ 真是丧~ 好吧我们来看看题目 小红帽是Pop star上最著名的人类画家,她可以将任何画出的东西变成真实的物品.赋予她这样神奇能力的正是她手上的画笔. 小红帽每次作画时,都需 ...

  3. YYH的营救计划(NOIP模拟赛Round 6)

    题目描述 “咚咚咚……”“查水表!”原来是查水表来了,现在哪里找这么热心上门的查表员啊!YYH感动的热泪盈眶,开起了门…… YYH的父亲下班回家,街坊邻居说YYH被一群陌生人强行押上了警车!YYH的父 ...

  4. 题(NOIP模拟赛Round #10)

    题目描述: 有一张的地图,其中的地方是墙,的地方是路.有两种操作: 给出个地点,询问这个地点中活动空间最大的编号.若询问的位置是墙,则活动空间为:否则活动空间为询问地点通过四联通能到达的点的个数.如果 ...

  5. 大(NOIP模拟赛Round #10)

    题目描述: 小Z有个n个点的高清大图,每个点有且只有一条单向边的出边.现在你可以翻转其中的一些边,使他从任何一个点都不能通过一些道路走回这个点.为了方便,你只需输出方案数对取模即可.当在两个方案中有任 ...

  6. bananahill(NOIP模拟赛Round 8)

    题目描述 香蕉川由座香蕉山组成,第i座山有它的高度.小Z准备从左到右爬这里的恰好座香蕉山,但他不希望山的高度起伏太大,太过颠簸,会让本就体育不好的他过于劳累.所以他定义了爬山的劳累度是所有爬的相邻的两 ...

  7. 战斗机的祈雨仪式(NOIP模拟赛Round 7)

    [问题描述] 炎炎夏日,如果没有一场大雨怎么才能尽兴?秋之国的人民准备了一场祈雨仪式.战斗机由于拥有操纵雷电的能力,所以也加入了其中,为此,她进行了一番准备. 战斗机需要给自己的Spear of Lo ...

  8. 魔法使的烟花(NOIP模拟赛Round 7)

    [问题描述] 魔法森林里有很多蘑菇,魔法使常常采摘它们来制作魔法药水.为了在6月的那个奇妙的晚上用魔法绽放出最绚丽的烟花,魔法使决定对魔法森林进行一番彻底的勘探. 魔法森林分为n个区域,由n-1条长度 ...

  9. 灰姑娘的水晶鞋(NOIP模拟赛Round 7)

    [问题描述] 传说中的水晶鞋有两种颜色:左边的水晶鞋是红色,右边的是蓝色,据说穿上它们会有神奇的力量. 灰姑娘要找到她所有的n双水晶鞋,它们散落在一条数轴的正半轴上,坐标各不相同,每双水晶鞋还有一个权 ...

随机推荐

  1. python flask豆瓣微信小程序案例

    项目步骤 定义首页模板index.html <!DOCTYPE html> <html lang="en"> <head> <meta c ...

  2. python学习之map函数和reduce函数的运用

    MapReduce:面向大型集群的简化数据处理引文 map()函数 Python中的map()函数接收两个参数,一个是调用函数对象(python中处处皆对象,函数未实例前也可以当对象一样调用),另一个 ...

  3. QWidget 自带的最大化,最小化,关闭按键的设置

    使用函数 setWindowFlags 参数: CustomizeWindowHint 去掉窗口所有自带按钮 Qt::CustomizeWindowHint | Qt::WindowCloseButt ...

  4. wlr设置 Blog Ping

    ref:http://www.cnblogs.com/zhangyang/archive/2011/07/22/2113856.html 设置 Blog Ping 1.什么是Ping服务(Ping S ...

  5. is 和 == 的区别,utf和gbk的转换,join用法

    is 和 == 的区别 # is 比较的是内存地址 # == 比较的是值 a = 'alex' b = 'alex' #int,str(小数据池)会被缓存,为了节约内存 print(id(a),id( ...

  6. Windows Phone 8.1 学习之路

    前几天看一哥们写的“Android学习之路”一文很不错,遂也写一篇Windows Phone的学习之路. 开发环境 台式机 不管是台式机还是笔记本,建议配置在I5+8G以上,I3+4G的话就别考虑用模 ...

  7. Python第三方模块tesserocr安装

    介绍 在爬虫过程中,难免会遇到各种各样的验证码,而大多数验证码还是图形验证码,这时候我们可以直接用 OCR 来识别. tesserocr 是 Python 的一个 OCR 识别库 ,但其实是对 tes ...

  8. CSS简易学习笔记

    学习地址:http://www.w3school.com.cn/css/index.asp cnblog不能把格式复制上来,有格式文字版:https://github.com/songzhenhua/ ...

  9. 四 Android Capabilities讲解

    本文转自:http://www.cnblogs.com/sundalian/p/5629429.html Android Capabilities讲解   1.Capabilities介绍 可以看下之 ...

  10. Python全栈工程师(列表、拷贝)

    ParisGabriel     感谢 大家的支持  你们的阅读评价就是我最好的更新动力  我会坚持吧排版做的越来越好      每天坚持 一天一篇 点个订阅吧  灰常感谢    当个死粉也阔以 Py ...