机蒜客练习题:气球消消乐
题目
样例
思路
分配颜色种类,若第一个气球为颜色1,则第二个气球有n-1个选择,而第三个气球不能选择第二个气球的颜色,依次类推,除第一个之外,都只有m-1个选择,故不会发生消消乐的情况数为m∗(m−1)n−1,而总情况数为mn,所求作差可得。
代码
#include<iostream>
using namespace std;
const long long mod=1000000007;
long long qpow(long long a,long long b)
{
long long res=1,temp=a;
for(;b;b/=2)
{
if(b&1) res=res*temp%mod;
temp=temp*temp%mod;
}
return res;
}
int main()
{
long long n,m;
cin>>n>>m;
cout<<(qpow(m,n)%mod-m*qpow(m-1,n-1)%mod+mod)%mod;
return 0;
}