本来还想了一会dp……

然而一看数据范围明显是数论……

那么推一推。。

我们发现可以用总方案数减去不会越狱的方案数

那么我们考虑在长度为n的数列中填数

首先第一个位置有m种选择,后面的位置:

总方案:m种;不会越狱:m-1种

快速幂。

 1 #include<cstdio>
 2 #include<cstring>
 3 #define ll long long
 4 using namespace std;
 5 const ll p=100003;
 6 ll n,m;
 7 ll read(){
 8     ll sum=0;
 9     char ch=getchar();
10     while (ch<'0'||ch>'9')
11         ch=getchar();
12     while (ch>='0'&&ch<='9'){
13         sum=sum*10+ch-'0';
14         ch=getchar();
15     }
16     return sum;
17 }
18 ll fast_pow(ll x,ll y){
19     ll sum=1;
20     while (y){
21         if (y&1) sum=(sum*x)%p;
22         x=(x*x)%p;
23         y>>=1;
24     }
25     return sum;
26 }
27 int main(){
28     m=read();
29     n=read();
30     printf("%lld",m%p*(fast_pow(m,n-1)-fast_pow(m-1,n-1)+p)%p);
31     return 0;
32 }
View Code

 

posted on 2016-11-15 14:12  Absolutezero  阅读(414)  评论(0编辑  收藏  举报