CF1332 E. Height All the Same

Link

Link

Solution

有个操作是给一个位置加上 2 2 2,那么也就是说所有的格子只要在模 2 2 2意义下相等就是合法的

考虑所有数字都是模 2 2 2意义下的,那么就变成只有 0 , 1 0,1 0,1的格子了

如果两个相邻格子的权值分别是 0 , 1 0,1 0,1,那么我我可以让他俩都加一,这样 0 , 1 0,1 0,1就调换了位置,可以看作 1 1 1“走到”了 0 0 0

如果两个相邻格子都是 1 1 1,那我可以“消掉”他们

也就是说 1 1 1可以上下左右走到相邻的 0 0 0,还可以和另一个 1 1 1消掉

那么只要整个棋盘上有偶数个 1 1 1,这些 1 1 1就能够全部变成 0 0 0,反之,如果有奇数个 1 1 1,那永远都没法全消掉

对于 0 0 0也是一样的道理

所以题目所给的要求就转化成了:所有格子中奇数的个数有偶数个、或者所有格子中偶数的个数有偶数个

如何计算的问题交给组合数学就好

Code

n, m, L, R = [int(x) for x in input().split()]
if L==R:
    print(1)
    exit(0)
mod = 998244353
inv2 = mod+1>>1
even = R//2 - (L-1)//2
odd = (R+1)//2 - (L)//2
cnt = n*m

if cnt%2 == 1:
    print( pow(odd+even,cnt,mod)%mod )
else:
    print( ( pow(odd+even,cnt,mod) + pow(odd-even,cnt,mod) ) * inv2 %mod )
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值