[BZOJ1008] [HNOI2008] 越狱 (数学)

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

Solution

  答案 = 总可能数 - 不越狱的可能数

     = m^n - m * (m-1)^(n-1)

 1 #include <cstdio>
 2 #define MOD 100003
 3 using namespace std;
 4 typedef long long ll;
 5 ll m, n;
 6
 7 int ksm(ll a, ll b)
 8 {
 9     ll c = 1, d = a % MOD;
10     while(b)
11     {
12         if(b & 1)
13            c = c * d % MOD;
14         b >>= 1;
15         d = d * d % MOD;
16     }
17     return c;
18 }
19
20 int main()
21 {
22     scanf("%lld %lld", &m, &n);
23     ll ans = ksm(m, n);
24     ans -= m * ksm(m - 1 ,n - 1) % MOD;
25     while(ans < 0)    ans += MOD;
26     printf("%lld", ans);
27     return 0;
28 }

时间: 2024-12-19 23:19:07

[BZOJ1008] [HNOI2008] 越狱 (数学)的相关文章

Bzoj1008 [HNOI2008]越狱

Time Limit: 1 Sec  Memory Limit: 162 MBSubmit: 7995  Solved: 3415 Description 监狱有连续编号为1...N的N个房间,每个房间关押一个犯人,有M种宗教,每个犯人可能信仰其中一种.如果相邻房间的犯人的宗教相同,就可能发生越狱,求有多少种状态可能发生越狱 Input 输入两个整数M,N.1<=M<=10^8,1<=N<=10^12 Output 可能越狱的状态数,模100003取余 Sample Input 2

BZOJ1008 HNOI2008 越狱 快速幂

题意:监狱有连续编号为1...N的N个房间,每个房间关押一个犯人,有M种宗教,每个犯人可能信仰其中一种.如果相邻房间的犯人的宗教相同,就可能发生越狱,求有多少种状态可能发生越狱 题解:设f[i]=有M种宗教i个房间时不发生越狱的方案数,显然f[1]=M,f[i]=f[i-1]*(M-1).最后答案就是N^M-f[N] #include <cstdio> #include <cstring> #include <cstdlib> #include <iostream

[BZOJ1008][HNOI2008]越狱 组合数学

正着直接算有点难,我们考虑反着来,用全集减补集. 总的方案数为$m^n$.第一个人有$m$种可能,第二个人有$m-1$种可能,第三个人有$m-1$种可能--发现补集就是$m*(m-1)^{n-1}$.用快速幂搞搞就行了. 1 #include<cstdio> 2 #include<cstring> 3 #include<algorithm> 4 using namespace std; 5 typedef long long ll; 6 const int mod=10

BZOJ 1008: [HNOI2008]越狱 水

BZOJ难得的水题 1008: [HNOI2008]越狱 Time Limit: 1 Sec  Memory Limit: 162 MB Submit: 4977  Solved: 2149 [Submit][Status][Discuss] Description 监狱有连续编号为1...N的N个房间,每个房间关押一个犯人,有M种宗教,每个犯人可能信仰其中一种.如果相邻房间的犯人的宗教相同,就可能发生越狱,求有多少种状态可能发生越狱 Input 输入两个整数M,N.1<=M<=10^8,1&

BZOJ 1008: [HNOI2008]越狱 快速幂

1008: [HNOI2008]越狱 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)(10

1008: [HNOI2008]越狱

1008: [HNOI2008]越狱 Time Limit: 1 Sec  Memory Limit: 162 MBSubmit: 7777  Solved: 3331[Submit][Status][Discuss] Description 监狱有连续编号为1...N的N个房间,每个房间关押一个犯人,有M种宗教,每个犯人可能信仰其中一种.如果相邻房间的犯人的宗教相同,就可能发生越狱,求有多少种状态可能发生越狱 Input 输入两个整数M,N.1<=M<=10^8,1<=N<=10

【BZOJ 1008】[HNOI2008]越狱

1008: [HNOI2008]越狱 Time Limit: 1 Sec  Memory Limit: 162 MBSubmit: 5535  Solved: 2370[Submit][Status][Discuss] Description 监狱有连续编号为1...N的N个房间,每个房间关押一个犯人,有M种宗教,每个犯人可能信仰其中一种.如果相邻房间的犯人的宗教相同,就可能发生越狱,求有多少种状态可能发生越狱 Input 输入两个整数M,N.1<=M<=10^8,1<=N<=10

1008: [HNOI2008]越狱(计数问题)

1008: [HNOI2008]越狱 Time Limit: 1 Sec  Memory Limit: 162 MBSubmit: 11361  Solved: 4914[Submit][Status][Discuss] Description 监狱有连续编号为1...N的N个房间,每个房间关押一个犯人,有M种宗教,每个犯人可能信仰其中一种.如果相邻房间的犯人的宗教相同,就可能发生越狱,求有多少种状态可能发生越狱 Input 输入两个整数M,N.1<=M<=10^8,1<=N<=1

P3197 [HNOI2008]越狱

题目描述 监狱有连续编号为1...N的N个房间,每个房间关押一个犯人,有M种宗教,每个犯人可能信仰其中一种.如果相邻房间的犯人的宗教相同,就可能发生越狱,求有多少种状态可能发生越狱 输入输出格式 输入格式: 输入两个整数M,N.1<=M<=10^8,1<=N<=10^12 输出格式: 可能越狱的状态数,模100003取余 输入输出样例 输入样例#1: 2 3 输出样例#1: 6 说明 6种状态为(000)(001)(011)(100)(110)(111) /*题目要求越狱方案数,而