Codeforces Ronda # 630 (Div. 2) E. Altura todos iguales (una combinación de potencia rápida inversa matemática)

https://codeforces.com/contest/1332/problem/E

Él dicha cara un montón de problemas, puede abstraerse como matriz un directa de n * m, cada uno de a [i] [j] representante de la altura de la rejilla (i, j) de. Puede realizar dos operaciones:
1. una cualquiera de a [i] [j] más 2.
2. a dos rejilla adyacente 1 se añaden
ahora dado n, m, l, r, n preguntará * m matriz de valor inicial de cada punto de la red es [l, r] de una cualquiera preguntar cuántos tipos de los valores iniciales se pueden hacer a través de la por encima de dos modos de funcionamiento, el mismo valor de punto de posesivo.

Cómo determinar si la operación se ha descrito anteriormente de tal manera que todos los de la matriz de peso igual? Paridad desde el punto de vista de tamaño inicial y el peso de la matriz.

1, si n * m es un número impar, entonces debe haber un número par (o número par de valor de unidad de peso del valor de peso es un incluso unidades impares) va a ser construido por la operación antes descrita del peso de la misma paridad. El número total del programa en este caso es (R-L & lt +. 1) m * n- esta parte puede ser procesado directamente por la potencia del flash.

2, las mentiras dificultad en el n * m es un número par. Se asume inicialmente que una matriz es un número impar el número de unidad de peso, b es un número par es el número de pesos. Si a es impar, no importa cómo las operaciones anteriormente descritas no son todos a y b tal que la misma paridad.

Sólo cuando a y b son tanto, incluso, antes de que puedan convertirse en la misma paridad.

 

 

 

1 #include <cstring>
 2 #include <iostream>
 3 #include <cstdio>
 4  usando  espacio de nombres std;
5 typedef largo  largo ll;
6  const  int maxN = 265.000 ;
7  const ll mod = 998244353 ;
8  ll q_pow (ll x, ll n) {
 9      res ll = 1 ;
10      , mientras que (n) {
 11          si (n y 1 ) res = (res * x)% mod;
12          x = x * x% mod;
13         n >> = 1 ;
14      }
 15      de retorno res;
16  }
 17  int main () {
 18      ll n, m, l, r;
19      cin >> n >> m >> l >> r;
20      ans ll;
21      Si (ll (n m *)% 2 ) {
 22          ans = q_pow (r-l + 1 , n * m);
23      }
 24      más {
 25          ll cnt = r - l + 1 ;
26          ll INV2 = q_pow ( 2 , mod- 2 );
27         año = (q_pow (cnt, m * n) + q_pow (cnt y 1 ? 1 : 0 , m * n))% mod;
28          años = año * INV2% mod;
29      }
 30      tribunal << años;
31      de retorno  0 ;
32 }

 

Supongo que te gusta

Origin www.cnblogs.com/AaronChang/p/12657376.html
Recomendado
Clasificación