1008: [HNOI2008]越狱(排列组合)

2024-04-16 02:58

本文主要是介绍1008: [HNOI2008]越狱(排列组合),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Description
  监狱有连续编号为1…N的N个房间,每个房间关押一个犯人,有M种宗教,每个犯人可能信仰其中一种。如果
相邻房间的犯人的宗教相同,就可能发生越狱,求有多少种状态可能发生越狱

Input
  输入两个整数M,N.1<=M<=108,1<=N<=1012

Output
  可能越狱的状态数,模100003取余

Sample Input
2 3
Sample Output
6
HINT
  6种状态为(000)(001)(011)(100)(110)(111)

Source

思路: 所有组合是m^n,不相邻的组合,第一个有m种,其他n-1个犯人各有m-1种。
所有的组合减去不相邻的组合就是答案。

#include <stdio.h>
#include <algorithm>using namespace std;typedef long long ll;
const int MOD = 100003;ll qpow(ll a,ll b)
{ll res = 1;while(b){if(b & 1)res = (res * a) % MOD;a = (a * a) % MOD;b >>= 1;}return res;
}int main()
{ll m,n;scanf("%lld%lld",&m,&n);printf("%lld\n",(qpow(m,n) - m * qpow(m - 1,n - 1) % MOD + MOD * 10) % MOD);return 0;
}

这篇关于1008: [HNOI2008]越狱(排列组合)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/907636

相关文章

CSP-J选择题 - 排列组合

排列问题:有5名学生参加比赛,要求排成一排拍照,有多少种不同的排列方式?组合问题:从10本书中选出3本书送给朋友,有多少种不同的选择方式?排列问题:一个教室有7个座位,5个学生需要坐下,有多少种不同的排列方式?组合问题:从12个人中选出4个人组成一个团队,有多少种不同的方式?排列问题:一个密码由4个字母组成,字母可以重复使用,有多少种不同的排列组合?组合问题:从8个不同颜色的球中选出3个,不考虑顺

HLJUOJ1127 HDU2049(错排公式+排列组合)

1127: 递推求解专题练习二 Time Limit: 1 Sec   Memory Limit: 128 MB Submit: 20   Solved: 8 [ Submit][ Status][ Web Board] Description 在电影院看电影时,总会有观众坐错座位号的情况。现在正在首播的青春爱情喜剧悬疑科幻大片《来治猩猩的你》观影现场爆满(满席)。 那么问题来了

JD 1008:最短路径问题

OJ题目:click here~~ 题目分析:无向图,每条边有长度和花费,求点s到t的最短路径长度和花费。若有相同的最短路径长度,找出最少的花费的那条。 邻接表 + Dijstra + 优先队列 AC_CODE const int maxn = 1008 ;const int inf = 1<<30 ;vector<int> g[maxn] ;int len[maxn][maxn

Java 排列组合字符串

例如 输入“abc”,打印所有可能出现的组合情况,并且消除重复值。 所谓排列组合如下: 排列组合,字符串:abcbcaacbabccbabaccab排列组合个数:6 实现代码(结合Java8 lambda表达式实现) import org.junit.Test;import java.util.ArrayList;import java.util.HashSet;impo

【HDU】 4832 Chess 排列组合 DP

Chess Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 351    Accepted Submission(s): 124 Problem Description   小度和小良最近又迷上了下棋。棋盘一共有N行M

全排列以及排列组合的输出

#include <stdio.h>#include <stdlib.h>int a[10],book[10],n;//a代表几号盒子装哪个数字,n代表多少个数字,book代表这个盒子是否已经被占了int m;//非全排列模式//void dfs(int step)//{// int i;// if(step==n+1)//所有盒子已经已经都被占了。// {//

排列组合问题

将5个相同的圆锥体零件表面涂上红、黄、蓝三种颜色。要求同一个零件的底面只能用一种颜色,同一个零件的斜面也只能用一种颜色,且5个零件的颜色彼此不完全相同,问总共有多少种不同的涂色方式? 这种题已经做了很多了,题目没有强调5个圆锥之间怎么摆放,那就默认不要排列,只有组合,但是每个圆锥内部上下的颜色是有顺序的,毕竟形状都不一样。排列组合问题要考虑“放回”还是“不放回”。这里从3种颜色中选择2次来涂一

HDU 1008(水题)

题意:给一个数n,后跟着n个数,代表电梯要到的层数,如果是上升,则每层花费6分钟,下降每层划分4分钟,停着话费5分钟,求电梯总共花费多少时间。   #include <iostream>using namespace std;void main(){int n, m, t, total;while (cin >> n && n != 0){m = 0;total = 0;wh

排列组合问题系列

<p>1、不重复排列问题:</p><p>题目意思:给你一个只含小写英文字母的串,长度规模<=200。让输出所有不重复的排列。按照字典序从小到达。</p><p>想法:正在验证板子,就拿整数的不重复排列写了下,发现那个数据规模极小,哪怕是10个数,也会达到10!的规模。现在是200的长度,怎么能不run error,或者是我程序写挫了。另外,看到网上有人这么写,方法很巧,我们都知道递归写排列,那么

2024.8.30 Python 最大连续1的个数,滑动窗口,排列组合,三数之和

1.最大连续1的个数 给定一个二进制数组 nums 和一个整数 k,如果可以翻转最多 k 个 0 ,则返回 数组中连续 1 的最大个数 。 示例 1: 输入:nums = [1,1,1,0,0,0,1,1,1,1,0], K = 2 输出:6 解释:[1,1,1,0,0,1,1,1,1,1,1] 粗体数字从 0 翻转到 1,最长的子数组长度为 6。 示例 2: 输入:nums = [0,0,1,