首页 > 其他 > 详细

[luogu3197][越狱]

时间:2018-10-11 20:28:42      阅读:156      评论:0      收藏:0      [点我收藏+]

luogu3197

思路

看了很久没思路,看了题解发现自己好zz。用全部的情况减去不合法的情况就行了。全部的情况就是每个人随便选,总共有\(m^n\)种情况,然后考虑不合法的情况,也就是任意相邻的两个人不能信仰同一宗教,第一个人有m个宗教可以选,后面的每个人因为都不能和前面那个人相同,所以后面的每个人有m-1个宗教可以选。所以最终答案就是\(m^n-m*(m-1)^{n-1}\)

代码

#include<cstdio>
#include<iostream>
using namespace std;
typedef long long ll;
const int mod=100003;
ll read() {
                ll x=0, tmp=1;
              char ch=getchar();
           //wxywwwwwwwwwwwwwwwwwwww
         while( (ch<'0') || (ch>'9') ){
        if(ch=='-')tmp=-1; ch=getchar();}
         while( (ch>='0')&&(ch<='9') ){
           x=x*10+ch-'0';ch=getchar();
              }//wxywwwwwwwwwwwwwwww
                return (x*tmp);
}
ll qmi(ll x,ll y) {
    ll ans=1;
    ll now=x;
    while(y) {
        if(y&1) ans=ans*now%mod;
        now=now*now%mod;
        y>>=1;
    }
    return ans;
}
int main() {
    ll m=read();
    ll n=read();
    cout<<(qmi(m,n)%mod-qmi(m-1,n-1)*m%mod+mod)%mod;
    return 0;
}

[luogu3197][越狱]

原文:https://www.cnblogs.com/wxyww/p/9774650.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!