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双水晶鞋,它们散落在一条数轴的正半轴上,坐标各不相同,每双水晶鞋还有一个权 ...
随机推荐
- C# 窗口关闭事件
首先添加一个退出事件函数 //退出按键 private void Form1_FormClosing(object sender, FormClosingEventArgs e) { DialogRe ...
- TouTiao开源项目 分析笔记4==>一个简单APP 整体常用框架
1.效果预览 1.1.如下图所以,到目前为止所有的功能. 2.从InitApp开始->SplashActivity->MainActivity 2.1.InitApp源代码.这是整个项目的 ...
- 通过Aspose.Word和ZXING生成复杂的WORD表格
1.前言 这是我之前做的一个项目中要求的功能模块,它的需求是生成一个WORD文档,需要每页一个表格并且表格中需要插入文字.条形码和二维码等信息,页数可控制.具体的效果如下图所示: 可以看到有以下几点是 ...
- Spring---单例模式(Singleton)的6种实现
1.1.1 摘要 在我们日常的工作中经常需要在应用程序中保持一个唯一的实例,如:IO处理,数据库操作等,由于这些对象都要占用重要的系统资源,所以我们必须限制这些实例的创建或始终使用一个公用的实例,这就 ...
- ARabevaluator 颜色渐变控制类
参考资料: http://blog.csdn.net/qq_33456552/article/details/52092865 实现渐变效果: ArgbEvaluator argbEvaluator; ...
- qq登录面板
- 2.ifconfig
转载http://www.cnblogs.com/peida/archive/2013/02/27/2934525.html 许多windows非常熟悉ipconfig命令行工具,它被用来获取网络接口 ...
- Installing Nginx With PHP5 (And PHP-FPM) And MySQL Support (LEMP) On Ubuntu 12.04 LTS [repost]
from : http://www.howtoforge.com/installing-nginx-with-php5-and-php-fpm-and-mysql-support-lemp-on-ub ...
- 《Cracking the Coding Interview》——第16章:线程与锁——题目1
2014-04-27 19:09 题目:线程和进程有什么区别? 解法:理论题,操作系统教材上应该有很详细的解释.我回忆了一下,写了如下几点. 代码: // 16.1 What is the diffe ...
- Http状态码枚举(摘自 Microsoft 程序集 System.dll)
// 摘要: // 包含为 HTTP 定义的状态代码的值. public enum HttpStatusCode { // 摘要: // 等效于 HTTP 状态 100. System.Net.Htt ...