洛谷 P3197 HNOI2008 越獄 題解

2022-05-01 04:09:07 字數 1083 閱讀 3721

監獄有連續編號為 \(1…n\) 的 \(n\) 個房間,每個房間關押乙個犯人,有 \(m\) 種宗教,每個犯人可能信仰其中一種。如果相鄰房間的犯人的宗教相同,就可能發生越獄,求有多少種狀態可能發生越獄。

輸入兩個整數 \(m,n\)

可能越獄的狀態數,模 \(100003\) 取餘

輸入 #1

2 3輸出 #1

6種狀態為(000)(001)(011)(100)(110)(111)

\(1 \le m \le 10^8\)

\(1 \le n \le 10^\)

組合數學 + 快速冪

n個房間裡面都有犯人,他們信仰m種不同的宗教

求有至少一對信仰相同宗教的人挨在一起的情況

正著求是很難求或者是沒有辦法求的

所以正難則反

沒法直接求出來越獄的情況

那就求出總的情況和不越獄的情況

用總的情況減去不越獄的情況

就是題目要求我們求的越獄的情況

總的情況

每乙個房間都有m中可能,一共有n個房間

所以可能性是m^n次方

總的情況就知道了

然後看不會越獄的情況

第乙個房間可以有m中選擇

第二個房間不能和第乙個房間的宗教一樣『

所以只有m-1中可能

第三個也是和第二個一樣

所以出現了乙個m和n-1個m-1

那麼不會越獄的情況就是m*(m-1)^(n-1)

知道了這兩個

一做差就可以求出來會越獄的情況了

冪運算很大需要用快速冪

#include#include#define int long long

using namespace std;

const int mo = 100003;

int p(int a,int b)

b /= 2;

a = ((a % mo) * (a % mo)) % mo;

} return ans;

} signed main()

洛谷 P3197 HNOI2008 越獄

來來來,日常水一篇 滑稽 監獄有連續編號為1 n的n個房間,每個房間關押乙個犯人,有m種宗教,每個犯人可能信仰其中一種。如果相鄰房間的犯人的宗教相同,就可能發生越獄,求有多少種狀態可能發生越獄 輸入格式 輸入兩個整數m,n.1 m 10 8,1 n 10 12 輸出格式 可能越獄的狀態數,模1000...

P3197 HNOI2008 越獄 題解

監獄有 n 個房間,每個房間關押乙個犯人,有 m 種宗教,每個犯人會信仰其中一種。如果相鄰房間的犯人的宗教相同,就可能發生越獄,求有多少種狀態可能發生越獄。答案對 100,003 取模。輸入只有一行兩個整數,分別代表宗教數 m 和房間數 n 輸出一行乙個整數代表答案。輸入 1 2 3輸出 1 6樣例...

P3197 HNOI2008 越獄(快速冪)

監獄有連續編號為 1 n1 n1 n 的 nnn 個房間,每個房間關押乙個犯人,有 mmm 種宗教,每個犯人可能信仰其中一種。如果相鄰房間的犯人的宗教相同,就可能發生越獄,求有多少種狀態可能發生越獄。輸入格式 輸入兩個整數 m,nm,nm,n 輸出格式 可能越獄的狀態數,模 100003100003...