http://www.lydsy.com/JudgeOnline/problem.php?id=1008

Description

  监狱有连续编号为1...N的N个房间,每个房间关押一个犯人,有M种宗教,每个犯人可能信仰其中一种。如果

相邻房间的犯人的宗教相同,就可能发生越狱,求有多少种状态可能发生越狱

Input

  输入两个整数M,N.1<=M<=10^8,1<=N<=10^12

Output

  可能越狱的状态数,模100003取余

Sample Input

2 3

Sample Output

6

HINT

  6种状态为(000)(001)(011)(100)(110)(111)

从题目里可以知道,N个房间M个宗教,可能产生的所有状态为A=N^M,要求出所有可能越狱的状态可能比较难,不如使用逆向思维,求所有不可能的越狱状态,可知只要相邻的房间宗教不同即可,故所有的不可能越狱状态为B=M*(M-1)*(M-1)...(M-1)=M*(M-1)^(N-1),那么答案就是A-B了,写个快速幂函数求出A,B即可。

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
/*ll quickpower(ll m,ll n)//简写版本
{
if(n==0) return 1;
ll temp=quickpower(m,n>>1);// n>>1 == n/2 n的二进制右移几位就是除以2的n次方
temp=temp*temp%100003;
if(n&1) temp=temp*m%100003;// n&1也就是取n的二进制最低位,判断n是否为奇数,是则为1
return temp%100003;
}*/
ll quickpower(ll m,ll n)//更容易看懂的版本
{
if(n==0) return 1;
else
{
while((n&1)==0)
{
n>>=1;
m=m*m%100003;
}
}
int temp=m;
n>>=1;
while(n!=0)
{
m=m*m%100003;
if((n&1)!=0) temp=temp*m%100003;
n>>=1;
}
return temp;
}
int main()
{
ll m,n;
cin>>m>>n;
m%=100003;
ll ans=quickpower(m,n);
ans-=(m*quickpower(m-1,n-1))%100003;
cout<<(ans+100003)%100003<<endl;
return 0;
}

BZOJ_1008 越狱(快速幂)的更多相关文章

  1. [HNOI2008] 越狱 快速幂

    [HNOI2008] 越狱 快速幂 水.考虑不发生越狱的情况:即宗教相同的都不相邻,一号任意放\(m\)种宗教的人,此后\(n-1\)个房间都放与上一个宗教不同的人,有\(m-1\)种,所以共有\(m ...

  2. BZOJ1008: [HNOI2008]越狱-快速幂+取模

    1008: [HNOI2008]越狱 Time Limit: 1 Sec  Memory Limit: 162 MBSubmit: 8689  Solved: 3748 Description 监狱有 ...

  3. BZOJ1008 [HNOI2008]越狱 快速幂

    欢迎访问~原文出处——博客园-zhouzhendong 去博客园看该题解 题目传送门 - BZOJ1008 题意概括 监狱有连续编号为1...N的N个房间,每个房间关押一个犯人,有M种宗教,每个犯人可 ...

  4. BZOJ 1008: [HNOI2008]越狱-快速幂/取模

    1008: [HNOI2008]越狱 Time Limit: 1 Sec  Memory Limit: 162 MBSubmit: 8689  Solved: 3748 Description 监狱有 ...

  5. BZOJ 1008: [HNOI2008]越狱 快速幂

    1008: [HNOI2008]越狱 Description 监狱有连续编号为1...N的N个房间,每个房间关押一个犯人,有M种宗教,每个犯人可能信仰其中一种.如果相邻房间的犯人的宗教相同,就可能发生 ...

  6. bzoj1008/luogu3197 越狱 (快速幂)

    算$m^n-m*(m-1)^{n-1}$,就是总的减去不越狱的,不越狱就每次都选一个和上一个不一样的

  7. bzoj1008 [HNOI2008]越狱——快速幂

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1008 (这样一道水题还因为忘记写 %lld WA了那么多遍) 发生越狱的状态数,就是全部状态 ...

  8. [HNOI2008]越狱 快速幂 逆推

    考虑越狱的情况有些复杂,不如考虑总情况减去不越狱的情况. 显然,总情况为 $m^n$ 种,不越狱的情况为 $m*(m-1)*(m-1)*(m-1)....$ 即为 $m*(m-1)^(n-1)$. 做 ...

  9. BZOJ-1008 越狱 数论快速幂

    1008: [HNOI2008]越狱 Time Limit: 1 Sec Memory Limit: 162 MB Submit: 6192 Solved: 2636 [Submit][Status] ...

  10. 【BZOJ】1008: [HNOI2008]越狱(快速幂)

    http://www.lydsy.com/JudgeOnline/problem.php?id=1008 刚开始看不会做啊,以为是dp,但是数据太大!!!所以一定有log的算法或者O1的算法,,,,还 ...

随机推荐

  1. Java-Dubbo学习及整合SpringBoot

    Dubbo架构 Dubbo是Java的RPC框架,具有三大核心功能:面向接口的远程方法调用,智能容错和负载均衡,以及服务的自动注册和发现 Dubbo架构图: 节点角色说明: 节点 说明 Provide ...

  2. 初识nest.js

    nest的核心概念: Nest的核心概念是提供一种体系结构,它帮助开发人员实现层的最大分离,并在应用程序中增加抽象. 架构预览: 主要有三个核心概念:模块Module,  控制器Controller, ...

  3. WPF 中的 路由事件

    public class ReportTimeEventArgs:RoutedEventArgs { public ReportTimeEventArgs(RoutedEvent routedEven ...

  4. WPF 中的DataTemplate 的嵌套

    <Window x:Class="WPF.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xa ...

  5. JS对象创建的几种方法

    最近一直在看JS高级程序设计这本书,有空来梳理一下几种创建对象的方式.话不多说,直接步入正题. 第一种:Object构造函数创建 var Person = new Object(); Person.n ...

  6. Ztree 树插件 树节点名称太长的解决方案

    样式允许的情况下 给背景div加滚动条.. 或者使用省略号方法:使用addDiyDom   http://blog.csdn.net/zhengbo0/article/details/17759543 ...

  7. T-SQL——关于跨库连接查询

    目录 0. 同一台服务器不同数据库 1. 使用跨库查询函数--OpenDataSource() 2. 使用链接服务器(Linking Server) 3. 使用OpenDataSource()函数和链 ...

  8. 1TB是多大?

    TB是计算机的存储单位,用来描述计算机的存储容量.另外还有GB.MB.KB.B.就像长度单位米.分米.厘米.毫米一样,它们之间有换算关系: 1KB = 1024B 1M = 1024KB 1GB = ...

  9. Java基础和常用框架的面试题

    前言 最近学校也催着找工作了,于是刷了一些面试题,学习了几篇大佬优秀的博客,总结了一些自认为重要的知识点:听不少职场前辈说,对于应届毕业生,面试时只要能说到核心重要的点,围绕这个点说一些自己的看法,面 ...

  10. DFS常规解题套路

    本文为xdfApp团队成员文章,原文链接:https://blog.csdn.net/sinat_37380158/article/details/106866970 作者介绍:韩沛沛, 北京邮电大学 ...