【HNOI 2008】 越狱
2024-09-03 18:22:29
【题目链接】
【算法】
显然,越狱情况数 = 总情况数 - 不能越狱的情况数
很容易发现,总情况数 = M^N
不能越狱的情况数怎么求呢? 我们发现,不能越狱的情况,其实就是第一个人任选一种宗教,后面n-1个人,每个人都选
一种与前面一个人不同的宗教,所以第一个人有M种选法,后N-1个人,每个人都有M-1种选法,因此,不能越狱的情况
数 = M * (M - 1)^(N - 1)
所以,越狱情况数 = M ^ N - M * (M - 1)^(N - 1)
注意算乘方时,要用到快速幂
【代码】
#include<bits/stdc++.h>
using namespace std;
const long long MOD = ; long long n,m,ans1,ans2; template <typename T> inline void read(T &x) {
long long f = ; x = ;
char c = getchar();
for (; !isdigit(c); c = getchar()) { if (c == '-') f = -f; }
for (; isdigit(c); c = getchar()) x = (x << ) + (x << ) + c - '';
x *= f;
}
template <typename T> inline void write(T x) {
if (x < ) { putchar('-'); x = -x; }
if (x > ) write(x/);
putchar(x%+'');
}
template <typename T> inline void writeln(T x) {
write(x);
puts("");
}
long long power(long long a,long long n) {
long long res;
if (n == ) return ;
if (n == ) return a % MOD;
res = power(a,n>>);
res = (res * res) % MOD;
if (n & ) res = res * a % MOD;
return res;
} int main() { read(m); read(n);
ans1 = power(m,n);
ans2 = ((m % MOD) * power(m-,n-)) % MOD;
writeln((ans1-ans2+MOD)%MOD); return ; }
最新文章
- 记一次git amend事故处理方案
- Struts的jar说明
- 记录Python学习中的几个小问题
- js 的使用原则
- 闲谈Tomcat性能优化
- jQuery 屏幕遮罩
- pandas 给数据打标签
- .net web程序发布之后,出现编译错误
- 第三百四十一天 how can I 坚持
- hdu 4604 Deque(最长不下降子序列)
- ios入门之c语言篇——基本函数——1——随机数生成
- 杀掉linux所有进程的命令
- MEF初体验之六:导出和元素据
- python的位置参数、默认参数、关键字参数、可变参数区别
- 关于Java8:StreamAPI的一点记录
- Vue和React的对比
- python属性查找 深入理解(attribute lookup)
- android:碎片的使用方式
- Docker下载地址(官网实在太慢)
- 【292】Python 关于中文字符串的操作
热门文章
- 69. JPA实体Bean的生命周期【从零开始学Spring Boot】
- Android版网易云音乐唱片机唱片磁盘旋转及唱片机机械臂动画关键代码实现思路
- [转]ORA-38500: USING CURRENT LOGFILE option not available without stand
- 制作U盘Puppy-Live启动盘
- HDU3549 最大流 裸题
- web.py 使用 db.select 返回的数据只能遍历一次
- loj6173 Samjia和矩阵(后缀数组/后缀自动机)
- navicat 无法连接到腾讯云Mysql
- Date日期模式
- Meteor ToDo App实例