BZOJ 1008 越獄(快速冪)

2021-07-23 06:17:35 字數 1090 閱讀 8816

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

input

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

output

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

sample input

2 3sample output

6hint

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

題解:我們先來考慮不會發生越獄的情況,第乙個房間的人可以選擇m種宗教中的任何一種,而後面的房間只能選擇和前乙個房間不同的宗教,所以能選擇m-1種(如下圖)。而總狀態數(m^n)減去不會越獄的狀態數就是會發生越獄的狀態數。所以答案應該是m^n-m*(m-1)^(n-1)。由於減的時候會出現負數,所以要先加mod再%mod。

這裡需要用到快速冪,然而我發現我的遞迴版的快速冪好像跑不出來otz,於是我想起學長曾經講過的二進位制快速冪,就到神犇的部落格裡學習了一下,還挺好懂的233(好吧,是我智障了otz)

**如下

#include

#include

#include

using

namespace

std;

const

long

long p=100003;

long

long ksm(long

long a,long

long k)

int main()

/*192072 101294871092

*/

BZOJ1008 越獄 (快速冪)

給出序列長度n和顏色數m,求出存在相鄰元素顏色相同的染色方案數。正難反易 因為正向解決這個問題比較困難,所以我們可以將問題轉化為求出不存在相鄰元素顏色相同的染色方案數,然後用所有排列的情況減去。對於序列中的每乙個人,只要和前乙個人的顏色不同就可以了,所以共有m 1種選擇。對於第乙個人無論選什麼顏色都...

bzoj1008 越獄 排列組合 快速冪

有n個有信仰的人,信仰共m種,每個人只有一種信仰,當兩個相同信仰的人遇到一起,他們便會逃走,求有多少中排列方式使得可能有人逃走,即存在兩個相同信仰的人相鄰,答案對100003取模。第一種 首先我我們考慮f i 代表前i個連續的人可能逃走的可能方案。當前面i 1個人中已經會有人逃跑了,第i個人的信仰就...

bzoj1008越獄 組合數學 快速冪

problem 1008.hnoi2008 越獄 time limit 1 sec memory limit 162 mb submit 11735 solved 5087 submit status discuss 監獄有連續編號為1 n的n個房間,每個房間關押乙個犯人,有m種宗教,每個犯人可能信...