洛谷 P3197 HNOI2008 越獄

2021-08-07 08:28:56 字數 840 閱讀 2122

來來來,日常水一篇(滑稽)

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

輸入格式:

輸入兩個整數m,n.1<=m<=10^8,1<=n<=10^12

輸出格式:

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

輸入樣例#1:

2 3

輸出樣例#1:

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

這題還是很坑的,我一開始正著想,一直在推各種奇怪的式子,結果wa了好幾次,最後迫不得已去看題解,結果發現這題要倒著想。。。

越獄情況數=總情況數-不越獄情況數

總情況數=mn

然後,不越獄只要滿足沒有相鄰的兩個相同就可以,也就是每乙個都和上乙個不同。

不越獄情況數=m∗

(m−1

)n−1

越獄情況數=mn

−m∗(

m−1)

n−1

#include

#define ll long long

using

namespace

std;

const ll p=100003;

ll m,n;

ll ksm(ll a,ll b,ll p)

a=(a*a)%p;

b>>=1;

}return ans;

}int main()

printf("%lld",ans%p);

return

0;}

洛谷 P3197 HNOI2008 越獄 題解

監獄有連續編號為 1 n 的 n 個房間,每個房間關押乙個犯人,有 m 種宗教,每個犯人可能信仰其中一種。如果相鄰房間的犯人的宗教相同,就可能發生越獄,求有多少種狀態可能發生越獄。輸入兩個整數 m,n 可能越獄的狀態數,模 100003 取餘 輸入 1 2 3輸出 1 6種狀態為 000 001 0...

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...