A. caramelos y dos hermanas
Titulo
¿Cuántos casos hay para dividir un número en dos números desiguales?
Ideas
Cuando los números impares se dividen entre dos, los números pares deben sustraerse si son iguales.
Código
#include <bits / stdc ++. h> usando el espacio de nombres std; vacío resolver () { int n; cin >> n; if (n & 1 ) cout << n / 2 << " \ n " ; else cout << n / 2 - 1 << " \ n " ; } int main () { int t; cin >> t; mientras que (t-- ) resuelve (); }
B. Construir la cadena
Titulo
Construya una cadena larga de $ n $ para que cada subcadena sucesiva de $ a $ tenga exactamente $ b $ letras diferentes.
Ideas
Solo usa letras $ b $ para construir.
Código
#include <bits / stdc ++. h> usando el espacio de nombres std; nulo resolver () { int n, a, b; cin >> n >> a >> b; for ( int i = 0 ; i <n; i ++ ) { cout << char ( ' a ' + i% b); } cout << " \ n " ; } int main () { int t; cin >> t; mientras que (t-- ) resuelve (); }
C. Dos equipos componiendo
Titulo
Elija algunos números en una matriz y divídalos en dos grupos, un grupo es diferente y un grupo es el mismo.
Ideas
Registre el número de solo un número y el número máximo de un número, si la diferencia entre el último y el primero es mayor o igual a $ 2 $, entonces el segundo conjunto puede dar un número al primer conjunto, de lo contrario el menor de los dos Valorar y finalmente juzgar los dos casos de la muestra.
Código
#include <bits / stdc ++. h> usando el espacio de nombres std; vacío resolver () { int n; cin >> n; mapa < int , int > m; int c [n]; para ( int & i: c) cin >> i, ++ m [i]; int a = 0 , b = 0 ; para (auto i: m) if (i.second == 1 ) ++ a; else { if (b) ++ a; b =max (b, i.segundo); } if (n == 1 ) cout << 0 << " \ n " ; más si (b == 0 ) cout << 1 << " \ n " ; más si (b - a> = 2 ) cout << a + 1 << " \ n " ; else cout << min (a, b) << " \ n " ; main () { int t; cin >> t; mientras que (t-- ) resuelve (); }
D. Anti-Sudoku
Titulo
Cambie una matriz cuadrada de Sudoku $ 9 {\ times} 9 $ por una matriz cuadrada de Sudoku inversa, es decir, al menos dos de las filas, columnas y matrices cuadradas $ 9 $ de $ 3 {\ times} 3 $ tienen el mismo número, la mayoría de los cambios $ 9 $ número.
Ideas
Seleccione filas y columnas de $ 9 $ sin repetir en la matriz cuadrada de $ 9 $, y cambie el número de intersecciones de estas filas y columnas de $ 9 $.
De hecho, es suficiente usar la naturaleza de Sudoku para cambiar un número a otro, porque en la matriz cuadrada de Sudoku correcta, cada número corresponde a nueve conjuntos de filas, columnas y matrices cuadradas no repetidas.
Código
#include <bits / stdc ++. h> usando el espacio de nombres std; vacío resolver () { char MP [ 10 ] [ 10 ] = {}; for ( int i = 1 ; i <= 9 ; i ++ ) { for ( int j = 1 ; j <= 9 ; j ++ ) { cin >> MP [i] [j]; } } bool vis_row [ 10 ] = {}; bool vis_col [ 10 ] = {}; for ( int i = 0 ; i < 3 ; i ++) { // Cambio en unidades de bloques 3x3 para ( int j = 0 ; j < 3 ; j ++ ) { bool flag = false ; for ( int x = 1 + 3 * i; x <= 3 * (i + 1 ); x ++ ) ( para ( int y = 1 + 3 * j; y <= 3 * (j + 1 ); y ++) { if (! vis_row [x] y! vis_col [y]) { if (MP [x] [y] == ' 9 ' ) MP [x] [y] = ' 1 ' ; de lo contrario MP [x] [y] ++ ; vis_row [x] = vis_col [y] = verdadero ; bandera = verdadero ; romper ; } } Si (bandera) descanso ; } } } para( int i = 1 ; i <= 9 ; i ++ ) { para ( int j = 1 ; j <= 9 ; j ++ ) { cout << MP [i] [j]; } cout << " \ n " ; } } int main () { int t; cin >> t; mientras que (t-- ) resuelve (); }
EF para ser llenado.