氣球消消樂 計蒜客(二分快速冪)

2021-09-10 14:30:33 字數 1025 閱讀 3190

蒜頭君有 n 只氣球,蒜頭君把氣球排成一排。初始時,氣球都是白色,現在蒜頭君想用 m 種顏色給氣球塗色,如果相鄰的氣球的顏色相同,這 2 個氣球會發生消消樂,蒜頭君希望你求出會發生消消樂的塗色方法有多少種。最後答案對 10^9+7取模。

輸入格式

輸入兩個整數n(1<=n<=1012),m(1<=m<=108)

輸出格式

輸出一行表示答案。

樣例輸入

3 4樣例輸出

28可消的方案數=總方案數-不可消的方案數

這裡我們講重點二分快速冪

遞迴法:

int

pow(

int a,

int b)

原理:

當b是偶數時: a^b = (a^(b/2) )^2

當b是奇數時:a^b = (a^(b-1)/2 )^2*a

迴圈法:

int

pow(

int a,

int b)

rturn res;

}

原理:

a^7 = a^1 * a^2 * a^4

------7的二進位制為 111

a^18 = a^2 * a^16

------18的二進位制為10010

仔細瞧瞧就可以發現7=1+2+4,18=2+16

#include

using namespace std;

typedef

long

long ll;

const ll mod=

1e9+7;

ll pow_mod

(ll a,ll b)

return res;

}int

main()

二分查詢 快速冪 計蒜客 氣球消消樂2

問題描述 蒜頭君有 n 只氣球,蒜頭君把氣球排成一排。初始時,氣球都是白色,現在蒜頭君想用 m 種顏色給氣球塗色,如果相鄰的氣球的顏色相同,這 2 個氣球會發生消消樂,蒜頭君希望你求出會發生消消樂的塗色方法有多少種。最後答案對 10 9 7取模。輸入輸出 輸入兩個整數n 1 n 10 12 m 1 ...

二分 快速冪 氣球消消樂

問題描述 蒜頭君有 n 只氣球,蒜頭君把氣球排成一排。初始時,氣球都是白色,現在蒜頭君想用 m 種顏色給氣球塗色,如果相鄰的氣球的顏色相同,這 2 個氣球會發生消消樂,蒜頭君希望你求出會發生消消樂的塗色方法有多少種。最後答案對 10 9 7取模。輸入格式 輸入兩個整數n 1 n 10 12 m 1 ...

計蒜客 1562 二分查詢

蒜頭君手上有個長度為 nn 的陣列 aa。由於陣列實在太大了,所以蒜頭君也不知道陣列裡面有什麼數字,所以蒜頭君會經常詢問在陣列 aa 中,比 xx 大的最小值是多大?但是這次蒜頭君要求這個數字必須大於 xx,不能等於 xx。輸入格式 第一行輸入兩個整數 nn 和 mm,分別表示陣列的長度和查詢的次數...