题意:n个格子,m种颜色,求存在相邻两个格子颜色相同的颜色组合数。
思路:很明显的排列组合,用总共的减去相邻的互不相同的种类数,记得取余,因为数据量较大,需要快速幂。
代码:
#include<bits/stdc++.h>
using namespace std;
#define mod 100003
long long AA(long long a,long long b)
{
if(b==1) return a;
if(b==0) return 1;
long long z=AA(a,b/2)%mod;
return (z*z*((b%2)?a:1))%mod;
}
int main()
{
long long n,m,a,b;
cin>>m>>n;
a=AA(m,n);
b=(AA(m-1,n-1)*(m%mod))%mod;
//cout<<a<<" "<<b<<endl;
cout<<(((a-b)%mod+mod)%mod)<<endl;
return 0;
}