分析:我們可以採用間接的方式來進行求解,用總共的狀態數減去不符合的狀態數。
總狀態數為;m^n
不符合的狀態數為:m*(m-1)^n-1
總的狀態數很容易理解,有m種宗教,n個人都可以選擇乙個,所以有m^n,不符合的狀態數我們可以這樣想,第乙個人有m種選擇,既然要不能越獄,那麼第二個人只能有m-1種選擇,第三個人一直到最後乙個都是不能與前乙個相同,所以都是m-1;
接下來的話就是計算,但是n,m很大,所以我們需要用到快速冪計算m^n;
#include#include#include#include#include#include#include#include#include#include#include#include#include#include#includeusing namespace std;
typedef long long ll;
const double pi = acos(-1.0);
const double eps = 1e-6;
const int max = 0x3f3f3f3f;
const int min = 0xc0c0c0c0;
const int maxn = 123456;
#define mod 100003
#define mst(a) memset(a,0,sizeof(a))
#define w(i) while(i--)
#define forij(i,j,k,step) for(int i=k;i>1;//除以2
m*=m%mod;
}return num;
}int main()
cout<
return 0;
}
模版 快速冪 矩陣快速冪
原理 x yx y xy中的 y yy 轉化成二進位制數,然後每乙個 1 11 對應 x xx 的 i ii 次方 這樣把x yx y xy轉化成了x yx y xy x ax a xa x bx b xb x cx c xc 通過對 x xx 不斷翻倍的過程,來匹配y轉成二進位制的 111。如果為...
模版 矩陣快速冪
矩陣快速冪就是快速冪的矩陣用法 ll fast power ll fp a ll fp n ll fp p return ret 得到遞推公式後推出轉移矩陣然後就套模版啦 include include define mod 1000000009 define ll long long using ...
矩陣快速冪模版
const int n 10 int tmp n n void multi int a n int b n int n 上訴res陣列就等同於普通快速冪初始化的1,原理想通的,這個矩陣叫單位矩陣e,性質就是e a a,就是1 a a,一樣,單位矩陣就是對角線全是1其他全是0 最終算出的結果是乙個re...