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; }