码迷,mamicode.com
首页 > 其他好文 > 详细

[luogu3197][越狱]

时间:2018-10-11 21:57:46      阅读:131      评论:0      收藏:0      [点我收藏+]

标签:相同   ==   names   span   思路   www   type   new   main   

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][越狱]

标签:相同   ==   names   span   思路   www   type   new   main   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!