欢迎来到SFWR的博客

P3197 [HNOI2008]越狱

题目描述

监狱有连续编号为 1…N N个房间,每个房间关押一个犯人,有 M 种宗教,每个犯人可能信仰其中一种。如果相邻房间的犯人的宗教相同,就可能发生越狱,求有多少种状态可能发生越狱。

输入输出格式

输入格式:

 

输入两个整数 M,N

 

输出格式:

 

可能越狱的状态数,模 100003 取余

 

——————————————————————————————————————

正难则反,费马小定理简化一下

// luogu-judger-enable-o2
#include<bits/stdc++.h>
using namespace std;
long long m,n,k=100003;
long long int power(int a,int b)
{
    if(!b)return 1;
    long long ans=power(a,b/2);
    if(!(b%2))return (ans*ans)%k;
    return ((a*ans)%k*ans)%k;    
}
int main()
{    
    cin>>m>>n;
    cout<<(power(m,n%(k-1))-m*power(m-1,(n-1)%(k-1))%k+k)%k;
}

 

posted @ 2019-05-26 18:23  SFWR  Views(96)  Comments(0Edit  收藏  举报