P3197 HNOI2008 越獄(快速冪)

2022-05-08 04:54:11 字數 1060 閱讀 7930

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

輸入格式:

輸入兩個整數 m,nm,nm,n

輸出格式:

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

輸入樣例#1:複製

2 3
輸出樣例#1:複製

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

1≤m≤ 10^8

1≤n≤10^12

思考總數 - 合法的狀態數(即鄰房間的犯人的宗教不相同);

因為每個牢房的犯人都可以信仰 m 種 宗教,所以說一共有 mnmn 種組合。

當乙個牢房的犯人信仰一種宗教後,相鄰的牢房的犯人只可以信仰 剩下的 m-1種 中的一種才不會越獄,即:

所以說 這是 m∗(m−1)n−1m∗(m−1)n−1 種;

所以說答案就是 mn−m∗(m−1)n−1mn−m∗(m−1)n−1

因為我們在過程中mod過,減出來可能為負,我們需要 (ans + mod)%mod

1 #include"

bits/stdc++.h"2

using

namespace

std;

3 typedef long

long

ll;4

5ll n,m;

6const ll mod = 100003;7

8ll powmod(ll a,ll b)923

24return

ans;25}

2627

2829

3031

intmain()

32

P3197 HNOI2008 越獄 題解

監獄有 n 個房間,每個房間關押乙個犯人,有 m 種宗教,每個犯人會信仰其中一種。如果相鄰房間的犯人的宗教相同,就可能發生越獄,求有多少種狀態可能發生越獄。答案對 100,003 取模。輸入只有一行兩個整數,分別代表宗教數 m 和房間數 n 輸出一行乙個整數代表答案。輸入 1 2 3輸出 1 6樣例...

洛谷 P3197 HNOI2008 越獄

來來來,日常水一篇 滑稽 監獄有連續編號為1 n的n個房間,每個房間關押乙個犯人,有m種宗教,每個犯人可能信仰其中一種。如果相鄰房間的犯人的宗教相同,就可能發生越獄,求有多少種狀態可能發生越獄 輸入格式 輸入兩個整數m,n.1 m 10 8,1 n 10 12 輸出格式 可能越獄的狀態數,模1000...

洛谷 P3197 HNOI2008 越獄 題解

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