题目
代码
#include <iostream>
#include <stdio.h>
#include <math.h>
#include <algorithm>
using namespace std;
/*所有可能为m的n次方
不发生越狱的可能为m*(m-1)的(n-1)次方
越狱可能为m的n次方-m*(m-1)的(n-1)次方*/
int h=100003;//模
long long x(long long m,long long n)//快速幂取模运算格式
{
long long s=1;
while(n)
{
if(n&1)//按位与运算,如果为奇数二进制最右边为1,运算结果为真(判断奇偶性)
s=s*m%h;
m=m*m%h;
n >>=1;//二进制右移
}
return s;
}
int main()
{
long long n,m;
cin >>m >>n;
long long s1,s2;
s1=x(m,n);
s2=m*x(m-1,n-1);
cout << (h+s1%h-s2%h)%h <<endl;//加h防止出现取模后s1<s2出现负数
return 0;
}