傳送門
應該是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 ...