正难则反
前面定后面就定->枚举开头
1 /************************************************************** 2 Problem: 1008 3 User: idy002 4 Language: C++ 5 Result: Accepted 6 Time:0 ms 7 Memory:804 kb 8 ****************************************************************/ 9 10 #include <cstdio> 11 #define M 100003 12 13 typedef long long lng; 14 15 lng n, m; 16 17 lng mpow( lng a, lng b ) { 18 a %= M; 19 lng rt; 20 for( rt=1; b; b>>=1,a=(a*a)%M ) 21 if( b&1 ) rt=(rt*a)%M; 22 return rt; 23 } 24 25 int main() { 26 scanf( "%lld%lld", &m, &n ); 27 lng ans = mpow( m, n ) - ((m%M)*(mpow( m-1, n-1 )%M))%M; 28 ans = (ans%M+M)%M; 29 printf( "%lld ", ans ); 30 }