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

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

Description

Solution

正向考虑需要去重,反向考虑:如果每个相邻的人宗教都不同,对于第一个位置有\(m\)种选择,第二个位置有\(m-1\)个选择,第三个位置也有\(m-1\)个选择......由此可知方案数为\(m\cdot (m-1)^{n-1}\)。又有总方案数为\(m^n\),所以所求方案数为\(m^n-m\cdot (m-1)^{n-1}\)

小优化:快速幂可以用费马小定理加速(44ms->8ms)

Code

#include 
#include
#include
#include
typedef long long LL;const LL MOD = 100003;LL n, m; inline LL pow_mod(LL x, LL p, LL mod) { x %= mod; p %= mod-1; // 费马小定理 LL ans = 1; for (; p; p >>= 1) { if (p & 1) ans = ans * x % mod; x = x * x % mod; } return ans;}int main() { std::cin >> m >> n; std::cout << (pow_mod(m, n, MOD) - m % MOD * pow_mod(m-1, n-1, MOD) % MOD + MOD) % MOD; return 0;}

转载于:https://www.cnblogs.com/wyxwyx/p/bzoj1008.html

你可能感兴趣的文章
ROS初级教程 cmake cmakelist.txt 的编写教程
查看>>
Comparing Inline and Multi-Statement Table valued UDFs
查看>>
python 机器学习
查看>>
php如何控制客户端生成缓存
查看>>
不错的在线印章生成器网站
查看>>
Arduino控制LCD显示helloworld
查看>>
线程、任务和同步学习笔记(一)
查看>>
JavaScript this
查看>>
OpenJudge/Poj 1163 The Triangle
查看>>
POJ 3130 半平面交+模版改进
查看>>
Python基础二
查看>>
AndroidStudio -- AndroidStuido中找不到cache.properties文件
查看>>
nginx 无法访问root权限的文件内容
查看>>
进程和线程有什么区别?
查看>>
关于text-align无法居中的问题
查看>>
Here We Go(relians) Again
查看>>
Signal函数
查看>>
[Errno 14] PYCURL ERROR 7 - "couldn't connect to host"
查看>>
chrono
查看>>
hdu2586 lca模板(在线路径倍增)
查看>>