题目:
AC代码:
#include<iostream>
#include<bits/stdc++.h>
using namespace std;
long long pow(long long a,long long b,long long mod) //二分快速幂
{
if(b==0)
return 1%mod;
long long temp=pow(a,b/2,mod);
temp=temp*temp%mod;
if(b%2==1)
temp=temp*a%mod;
return temp;
}
int main()
{
long long n,m;
cin>>n>>m;
long long mod=1000000007;
long long all=pow(m,n,mod);
long long diff=(m%mod*pow(m-1,n,mod))%mod;
long long ans=all-diff; //全部方案数减去没有气球消消乐的方案数(排列组合思想)
if(ans<0) ans+=mod;
cout<<ans;
return 0;
}
就是模板题。
二分快速幂对于大数据求幂 很有效率。必须记住。
然后测试遇到的问题就是出现了负数,发现如果all取余后比diff取余后的值小的话就会这样,所以应该判断一下,加个mod。