HNOI 2008 越獄 快速冪 組合數學

2021-10-02 11:06:41 字數 1030 閱讀 3844

原題來自:hnoi 2008

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

輸入兩個整數 m 和 n。

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

2 3
6
樣例說明

所有可能的 6 種狀態為:,,,,,。

對於全部資料,1≤m≤10^8,1≤n≤10^12。

快速冪+組合計數

這道題是正難則反,因為我們無法直接算出可能發生越獄的情況數,那就將總方案數減去不可能發生越獄的情況數

(一)總的情況數

每個房間都有m種可能,一共n個房間,所以總的情況數為

(二)不可能越獄的情況數

第乙個房間有m種可能

第二個房間不能和第乙個房間的宗教信仰一樣,有m-1種可能

第三個房間不能和第二個房間的宗教信仰一樣,有m-1種可能

以此類推,所以不可能發生越獄的情況數為:

(三)發生越獄的情況數

發生越獄的情況數為:

因為m和n都很大,所以總情況數和不可能越獄的情況數都用快速冪計算

#include#define mod 100003

#define ll long long

using namespace std;

ll quick_pow(int a,int b)

return ans;

} int main()

HNOI2008 越獄 組合數學

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

HNOI2008 越獄 (組合數學)

傳送門 應該是hnoi2008年最簡單的一道題了吧 簡單的組合數題,不過要換個思路。我們直接考慮發生越獄的情況似乎有點複雜,那我們換個思路,考慮不發生越獄的情況,也就是兩個有相同宗教的人不會坐在一起。第乙個人有m種宗教可以信仰,那麼第2個就只有m 1種了,不過我們發現,之後,第3個人其實還可以信仰m...

1008 HNOI2008 越獄 快速冪

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