假设有 n 只球,将球排成一排。开始球为白色,我现在想用m种颜色给球分别涂色,如果相邻的球的颜色相同,这 2 个球会消失,问有多少种排列会使球消失。最后答案对 1000000007取模。
样例输出
样例输入
样例输出
代码如下:
取两个整数n,m (0<m<n<10^12)
样例输入
2 2
样例输出
2
样例输入
3 4
样例输出
28
代码如下:
#include <iostream>
#include <cstdio>
using namespace std;
//全部都用 long long 好处理
long long mod = 1000000007;
long long pow_mod(long long x,long long y){
long long temp;
long long res;
temp = x;
res = 1;
for(;y!=0;y=y/2){
if(y&1){
res = temp * res % mod;
}
temp = temp * temp % mod;
}
return res;
}
int main(){
long long n,m;
cin>>n>>m;
long long ans = (pow_mod(m,n)-m*pow_mod(m-1,n-1))%mod;
if(ans < 0){//例如 (9-7)%3 小于零 只有再加上所模的数才正确
ans += mod;
}
cout<<ans<<endl;
return 0;
}