一开始想到直接计算:
m^(n-1)*(n-1)-((n+3)*(n-2)/2-(n-2))
两个固定,其他的随意,但重复计算的不好除去
所以看了题解后,所有的减去不会越狱的:
m^n-m*(m-1)^(n-1)
#include<iostream> #include<cstdio> using namespace std; const int mod=100003; long long quick(long long a,long long b,long long p){ long long ans=1; for( ;b!=0;b=b>>1,a=(a*a)%p){ if(b&1==1){ ans*=a;ans%=p; } } return ans; } int main(){ long long m,n;cin>>m>>n; cout<<(quick(m,n,mod)-(m*quick(m-1,n-1,mod))%mod)%mod<<endl; return 0; }