監獄有連續編號為 1…n 的 n 個房間,每個房間關押乙個犯人,有 m 種宗教,每個犯人可能信仰其中一種。如果相鄰房間的犯人的宗教相同,就可能發生越獄,求有多少種狀態可能發生越獄。
輸入格式:
輸入兩個整數 \(m,n\)
輸出格式:
可能越獄的狀態數,模 100003取餘
輸入樣例#1:
2 3輸出樣例#1:
6種狀態為(000)(001)(011)(100)(110)(111)
1≤m≤108
1≤n≤1012
這道題運用了正難反易的思想.
直接處理出合法的情況即可.
然後想一想: 第乙個有 n 種情況,然後的話 第二個就有 n-1 種情況.
再依次類推,會發現,後面都是 n-1 種情況.
所以 ans 即為: $$mn-n*(n-1).$$
套乙個快速冪模板即可. 需要注意的是 ans 為負數的情況.
#include#includeusing namespace std;
long long n,m,p;
long long quick_pow(long long s,long long ks)
return k%p;
} int main()
HNOI2008 越獄 (組合數學)
傳送門 應該是hnoi2008年最簡單的一道題了吧 簡單的組合數題,不過要換個思路。我們直接考慮發生越獄的情況似乎有點複雜,那我們換個思路,考慮不發生越獄的情況,也就是兩個有相同宗教的人不會坐在一起。第乙個人有m種宗教可以信仰,那麼第2個就只有m 1種了,不過我們發現,之後,第3個人其實還可以信仰m...
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 ...