监狱有连续编号为1...N的N个房间,每个房间关押一个犯人,有M种宗教,每个犯人可能信仰其中一种。如果
相邻房间的犯人的宗教相同,就可能发生越狱,求有多少种状态可能发生越狱
标签:online scan code 数学 多少 des mod div pre
监狱有连续编号为1...N的N个房间,每个房间关押一个犯人,有M种宗教,每个犯人可能信仰其中一种。如果
相邻房间的犯人的宗教相同,就可能发生越狱,求有多少种状态可能发生越狱
输入两个整数M,N.1<=M<=10^8,1<=N<=10^12
可能越狱的状态数,模100003取余
6种状态为(000)(001)(011)(100)(110)(111)
题目大意:如题
解题思路:n个房间,m种宗教。每个房间都有m种可能,那就有n^m种,反向思考,总数减去相邻两个不相同的数量,就是答案。相邻两个不相同的情况有m*(m-1)^(n-1)种情况。
代码:
#include <cstdio> using namespace std; const int mod = 1e5+3; int ks(long long n,long long k) { long long s=1; while(k) { if(k%2) s = s*n%mod; n = n*n%mod; k /= 2; } return s; } int main() { long long m,n; while(scanf("%lld %lld",&m,&n)!=EOF) { long long tot = ks(m,n); long long ret = m*ks(m-1,n-1)%mod; long long ans = (tot-ret+mod)%mod; printf("%lld\n",ans); } }
标签:online scan code 数学 多少 des mod div pre
原文地址:http://www.cnblogs.com/WWkkk/p/7399354.html