博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Bzoj1008 [HNOI2008]越狱
阅读量:6432 次
发布时间:2019-06-23

本文共 1075 字,大约阅读时间需要 3 分钟。

 

Time Limit: 1 Sec  Memory Limit: 162 MB
Submit: 7995  Solved: 3415

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)

 

Source

 

数学方法。

总情况数有m^n种。

若不会越狱,那么相邻两个房间的值都不一样,若房间1有m种值,房间2只能取(m-1)种,房间3也是(m-1)种……

故不会越狱的情况有m*(m-1)^(n-1)种

作差即得到越狱的情况数

一个快速幂解决

1 /*by SilverN*/ 2 #include
3 #include
4 #include
5 #include
6 #include
7 #define LL long long 8 using namespace std; 9 const int mod=100003;10 LL n,m;11 LL ksm(LL x,LL k){12 LL tmp=1;13 while(k){14 if(k&1)tmp=(tmp*x)%mod;15 x=(x*x)%mod;16 k>>=1;17 }18 return tmp;19 }20 int main(){21 cin>>m>>n;22 LL tot=ksm(m,n);23 LL tmp=(m%mod*ksm((m-1),(n-1))%mod)%mod;24 tot=((tot-tmp)%mod+mod)%mod;25 cout<
<

 

转载于:https://www.cnblogs.com/SilverNebula/p/5998766.html

你可能感兴趣的文章
我见过的几种类型的员工(转)
查看>>
web前端的十种jquery特效及源码下载
查看>>
poj 3414 Pots (bfs+线索)
查看>>
Binary search
查看>>
http://jingyan.baidu.com/article/08b6a591f0fafc14a9092275.html
查看>>
MySQL查询数据表的Auto_Increment(自增id)
查看>>
java多线程系类:JUC集合:01之框架
查看>>
【Linux】 源码安装make命令详解,避免踩坑
查看>>
数据库中间表插入乱序
查看>>
[Python爬虫] 之四:Selenium 抓取微博数据
查看>>
使用OPENROWSET爆破SQL Server密码
查看>>
Mac_安装Homebrew以及Maven
查看>>
eclipse web开发Server配置
查看>>
曹政--互联网搜索老师傅
查看>>
MUI框架开发HTML5手机APP(一)--搭建第一个手机APP(转)
查看>>
linux下使用 du查看某个文件或目录占用磁盘空间的大小
查看>>
Android水波纹特效的简单实现
查看>>
MugLife静态照片变3D动画算法研究
查看>>
[wp7软件]wp7~~各种视频播放器下载大全
查看>>
基于NodeJS的HTTP server Plus 4:多语言(Accept-Language/Content-Language)
查看>>