HNOI2008 越獄 (組合數學)

2022-05-05 18:45:07 字數 850 閱讀 1765

傳送門

應該是hnoi2023年最簡單的一道題了吧……簡單的組合數題,不過要換個思路。

我們直接考慮發生越獄的情況似乎有點複雜,那我們換個思路,考慮不發生越獄的情況,也就是兩個有相同宗教的人不會坐在一起。

第乙個人有m種宗教可以信仰,那麼第2個就只有m-1種了,不過我們發現,之後,第3個人其實還可以信仰m-1種宗教……只要不和第2個人相同,第4個人和以後的人也同理。那麼方案就是m * (m-1)^(n-1)

總的方案數是m^n,相減即為所求,注意取模的時候不要有負數。

看一下**。

#include#include

#include

#include

#include

#define rep(i,a,n) for(int i = a;i <= n;i++)

#define per(i,n,a) for(int i = n;i >= a;i--)

#define enter putchar('\n')

using

namespace

std;

typedef

long

long

ll;const

int m = 200005

;const ll p = 100003

;ll read()

while(ch >= '

0' && ch <= '9'

)

return ans *op;

}ll m,n;

ll qpow(ll a,ll b)

return q %p;

}int

main()

HNOI2008 越獄 組合數學

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

HNOI 2008 越獄 快速冪 組合數學

原題來自 hnoi 2008 監獄有連續編號為 1 到 n 的 n 個房間,每個房間關押乙個犯人。有 m 種宗教,每個犯人可能信仰其中一種。如果相鄰房間的犯人信仰的宗教相同,就可能發生越獄。求有多少種狀態可能發生越獄。輸入兩個整數 m 和 n。可能越獄的狀態數,對 100003取餘。2 36樣例說明...

bzoj1008 越獄 組合數學

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