BZOJ1008 [HNOI2008]越狱 (快速幂,组合)
2024-10-20 01:29:16
题目大意
求\(m\)种数字组成的长度为\(n\)的序列的种数,序列中至少有一段连续的数字
分析
用可重排列的种数减去,相邻数字互不相同的序列种数
考虑相邻互不相同,第一个元素有\(m\)种可能,后面每个元素不能和它左边的那个数一样,有\(m-1\)种可能
即$$m^n - m(m-1)^{n-1}$$
代码
#include<iostream>
#include<cmath>
#include<cstdio>
#define LL long long
using namespace std;
const LL p = 100003;
LL pw(LL a,LL b){
LL t = 1;
for (;b;b >>= 1) {
if (b & 1) t = t * a % p;
a = a % p * a % p;
}
return t;
}
int main(){
LL n,m;
scanf("%lld%lld",&m,&n);
printf("%lld\n",(p + pw(m,n) - m * pw(m - 1,n - 1) % p) % p);
return 0;
}
最新文章
- SQLite应用之实例代码
- 今天又学了一招,牛逼!!!解决";-bash:No such file or directory";问题
- Js-知识小总结
- 缓存,socket乱码等
- Oracle11g的安装和基本使用
- 查看LINUX进程内存占用情况
- editplus中使用emmet?
- CH Round #54 - Streaming #5 (NOIP模拟赛Day1)解题报告
- XSS检测工具 X5S/fiddler
- laravel 自定义函数 使用
- QT4.7.4-vs2008和vs2010的安装并编写测试程序
- 爆炸,解体,入侵,你想得到的你想不到的大BUG们
- [数据可视化之一]Pandas单变量画图
- 看完让你彻底理解 WebSocket 原理,附完整的实战代码(包含前端和后端)
- android 面试题(一)
- VBA find查找行号和列号的方法
- 爬虫--scrapy+redis分布式爬取58同城北京全站租房数据
- (原创)Linux下的floating point exception错误解析
- systemctl自定义service
- 如何充分利用 Windows Phone 高清屏幕