原题:

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. 字符串的输入问题 C++

    C++中,初学时最常用的输入字符的方式为cin,但是,cin是如何确定已经完成了字符串的输入了呢?由于不能通过键盘输入空字符("\0"),因此cin需要用别的方法来确定字符串的结尾 ...

  2. Android面试收集录18 Android Context详解

    Activity mActivity =new Activity() 作为Android开发者,不知道你有没有思考过这个问题,Activity可以new吗?Android的应用程序开发采用JAVA语言 ...

  3. SharpCompress的压缩文件解压和文件夹压缩

    1.前言 最近做一个功能需要用到对压缩文件的解压,就找到了这个SharpCompress不错,还能解压rar的文件.但是网上的资料和我拿到的SharpCompress.dll的方法有些出入,所以我就自 ...

  4. webstrom Certificate validation failed

    今天好烦.因为装了一个webstrome,我的svn不管用了. 为了防止webstrom,我的日期改了,日期改了,csdn登不上去了.告诉我时期不对. 草草哦哦. 这就是那个svn出问题之后的画面. ...

  5. powershell设置SS代理

    $env:HTTPS_PROXY="http://127.0.0.1:1080" $env:HTTP_PROXY="http://127.0.0.1:1080"

  6. 《Cracking the Coding Interview》——第6章:智力题——题目2

    2014-03-19 06:57 题目:对于8x8的棋盘,如果拿掉对角位置的两个小块儿,能否用1x2的多米诺牌拼成剩下的棋盘? 解法:不可能.且不说8x8,NxN都是不可能的.如果N是奇数,NxN-2 ...

  7. 网页图片很多时,加载完后再加载图片(defer:延迟加载)

    图片影响页面加载速度,可以先加载完页面,再去加载图片. defer:告诉浏览器,这里面的js代码不影响网页脚本解析,可以解析完html脚本再执行这段js代码(个人理解). 网页代码:<img s ...

  8. 使用selenium监听每一步操作

    1.创建类LogEventListener.java, 如下: package com.demo; import org.openqa.selenium.By; import org.openqa.s ...

  9. install.cloudinit.qga.bat

    @echo off title Auto Install color 1F ::CloudBase-Init echo. msiexec /i \\192.168.122.47\cloudbase\C ...

  10. CodeForces-1061D TV Shows

    题目链接 https://vjudge.net/problem/CodeForces-1061D 题面 Description There are nn TV shows you want to wa ...