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

2021-10-02 10:10:40 字數 983 閱讀 4817

問題描述:

蒜頭君有 n 只氣球,蒜頭君把氣球排成一排。初始時,氣球都是白色,現在蒜頭君想用 m 種顏色給氣球塗色,如果相鄰的氣球的顏色相同,這 2

個氣球會發生消消樂,蒜頭君希望你求出會發生消消樂的塗色方法有多少種。最後答案對 10^9+7取模。

輸入輸出:

輸入兩個整數n(1<=n<=10^12 ) ,m(1<=m<=10 ^12) 輸出一行表示答案。

樣例輸入

3 4樣例輸出

28

解法:

一開始想的是怎麼正面算,。。。

原來這題考的是 簡單組合排序。

先求出不發生消消樂的情況數,用總的情況數減去即可。

不發生消消樂情況數:=m∗(m−1)^n−1

(第乙個有m種塗法,往後每乙個有m-1種塗法)。

總數=mn;

.可得 答案= mn−m∗(m−1)n−1

因為n的範圍為10^12所以使用快速冪。

因為m的範圍為10^12所以使用快速乘。

最後注意取模的時候 需要加上乙個mod再取模,要不然會出現負數的情況。

**:

#includeusing namespace std;

typedef long long ll;

ll mod = 1e12+7;

ll n,m;

ll pow_mul(ll a,ll b)

a = (a+a) %mod;

b >>= 1;

}return ress;

}ll pow_mod(ll a,ll b)

// 超過 long long

// a = (a*a) %mod;

a = pow_mul(a,a);

b >>= 1;

}return res;

}int main()

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

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

二分 快速冪 氣球消消樂

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

計蒜客 1562 二分查詢

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