CF1332 E. Height All the Same

Link

Link

Solution

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

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

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

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

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

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

对于 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 )
发布了948 篇原创文章 · 获赞 77 · 访问量 21万+

猜你喜欢

转载自blog.csdn.net/FSAHFGSADHSAKNDAS/article/details/105248708