组合数学——cf1332E

Posted zsben991126

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了组合数学——cf1332E相关的知识,希望对你有一定的参考价值。

/*
结论:可以同时改变任意两个块的奇偶性
所以如果n*m是奇数,那么初始状态无论如何设置都可以
n*m是偶数: 初始状态必须有偶数个偶数|偶数个奇数,求的时候用二项式反演一下即可 
*/
#include<bits/stdc++.h>
using namespace std;
#define ll long long 
#define mod 998244353
ll Pow(ll a,ll b){
    ll res=1;
    while(b){
        if(b%2)res=res*a%mod;
        b>>=1;a=a*a%mod;
    }
    return res;
}
int main(){
    ll n,m,L,R;
    cin>>n>>m>>L>>R;
    if(n*m%2==0){
        ll ans=0,odd,even;
        if(L%2==0){
            odd=(R-L+1)/2;
            even=R-L+1-odd;
        }else {
            even=(R-L+1)/2;
            odd=R-L+1-even;
        }
        if(odd==0 || even==0)ans=1;
        else { 
            ll sum=Pow(odd+even,n*m);
            ll dif=Pow(odd-even,n*m);
            ans=(sum+dif)*Pow(2,mod-2)%mod;
        }
        cout<<ans<<
;
    }else {
        cout<<Pow(R-L+1,n*m)<<
;
    }
} 

 

以上是关于组合数学——cf1332E的主要内容,如果未能解决你的问题,请参考以下文章

如何从后台弹出片段

Relay.js 没有正确解析组合片段

20南京站补题(EF)+cf数学

CF J. Superfactorial numeral system 我知道你数学不好...

JavaScript 代码片段

如何组合绑定片段而不将它们包装在 XML 文字中