气球消消乐
蒜头君有 n 只气球,蒜头君把气球排成一排。初始时,气球都是白色,现在蒜头君想用 m 种颜色给气球涂色,如果相邻的气球的颜色相同,这 2 个气球会发生消消乐,蒜头君希望你求出会发生消消乐的涂色方法有多少种。最后答案对 10^{12}+7 取模。
输入格式
输入两个整数 n (1≤n≤12),m (1≤m≤12)
输出格式
输出一个整数表示答案。
样例输入1
2 2
样例输出1
2
样例输入2
3 4
样例输出2
28
思路:发生消除的事件数等于所有事件数(m^n),减去不发生消消乐的次数(m*((m-1)^(n-1))),即第一个气球可以涂m种颜色,剩下的气球只能涂m -1种颜色(要与前一个气球不同),采用快速幂和快速乘进行计算
mul_mod : 计算 a * b % mod的值
pow_mod :计算 a ^ b % mod的值
#include <cstdio>
#include <iostream>
using namespace std;
const long long mod = 1e12 + 7;
long long mul_mod(long long a,long long b){
long long res = 0;
wh