Dado un cuadrado de tamaño n . Hay n 2 cuadrados pequeños dentro del cuadrado n de tamaño 1 unidad cada uno, en los que cualquiera de los cuadrados está coloreado. Nuestra tarea es cortar el cuadrado n en dos partes iguales. La línea de corte no debe tener ningún punto en común con la celda coloreada y las dos partes resultantes deben ser iguales hasta la rotación. Escriba “SÍ” si es posible cortar el cuadrado con tales condiciones y “NO” en caso contrario.
Nota: El valor de n siempre debe ser un número positivo par.
Ejemplos:
Input : n = 4, x = 1, y = 1 Output : YES // n = 4 and 1 1 is the coordinate of the colored square Input : n = 2, x = 1, y = 1 Output : NO
En el primer ejemplo, el cuadrado pintado tiene una coordenada 1 x 1. Entonces tenemos que cortar el cuadrado más grande en dos partes para que no quede ningún punto común con la celda coloreada. La línea en negrita que se muestra en la imagen de arriba corta el cuadrado en dos partes iguales.
A continuación se muestra el algoritmo paso a paso para resolver este problema:
1 . Inicialice el tamaño del cuadrado y la posición del cuadrado pintado.
2 . Dividir un cuadrado en dos partes iguales solo será posible si la línea de corte pasa por el centro de nuestro cuadrado mayor.
3 . Por lo tanto, si el cuadrado pintado está vinculado de todos modos al centro del cuadrado más grande, entonces no es posible cortar el cuadrado más grande en dos partes iguales.
4 . Entonces, para verificar, divida el tamaño del cuadrado más grande por la mitad y verifique si alguna dimensión de un cuadrado pintado está vinculada a él.
A continuación se muestra la implementación del enfoque anterior:
C++
// C++ program to illustrate // the above problem #include <bits/stdc++.h> using namespace std; // function to check if it's possible to // divide the square in two equal parts void halfsquare(int n, int x, int y) { int half = n / 2; // if the painted square is linked anyway // to the center of the square // then it's not possible if ((half == x || half == x - 1) && (half == y || half == y - 1)) cout << "NO" << endl; // else yes it's possible else cout << "YES" << endl; } // Driver code int main() { // initialize the size of the square int n = 100; // initialize the dimension of the painted square int x = 51, y = 100; halfsquare(n, x, y); return 0; }
Java
// Java program to illustrate // the above problem import java.io.*; class GFG { // function to check if it's possible to // divide the square in two equal parts static void halfsquare(int n, int x, int y) { int half = n / 2; // if the painted square is linked anyway // to the center of the square // then it's not possible if ((half == x || half == x - 1) && (half == y || half == y - 1)) System.out.println( "NO"); // else yes it's possible else System.out.println( "YES"); } // Driver code public static void main (String[] args) { // initialize the size of the square int n = 100; // initialize the dimension of the painted square int x = 51, y = 100; halfsquare(n, x, y); } } // This code is contributed // by inder_verma..
Python 3
# Python 3 program to illustrate # the above problem # function to check if it's possible to # divide the square in two equal parts def halfsquare(n, x, y) : half = n // 2 # if the painted square is # linked anyway to the center # of the square then it's # not possible if ((half == x or half == x - 1) and (half == y or half == y - 1)) : print("NO") # else yes it's possible else : print("YES") # Driver code if __name__ == "__main__" : # initialize the size of the square n = 100 # initialize the dimension # of the painted square x, y = 51, 100 halfsquare(n, x, y) # This code is contributed by ANKITRAI1
C#
// C# program to illustrate // the above problem using System; class GFG { // function to check if it's possible to // divide the square in two equal parts static void halfsquare(int n, int x, int y) { int half = n / 2; // if the painted square is linked anyway // to the center of the square // then it's not possible if ((half == x || half == x - 1) && (half == y || half == y - 1)) Console.WriteLine( "NO"); // else yes it's possible else Console.WriteLine( "YES"); } // Driver code public static void Main () { // initialize the size of the square int n = 100; // initialize the dimension of the painted square int x = 51, y = 100; halfsquare(n, x, y); } } // This code is contributed // by anuj_67..
PHP
<?php // PHP program to illustrate // the above problem // function to check if it's // possible to divide the // square in two equal parts function halfsquare($n, $x, $y) { $half = $n / 2; // if the painted square is // linked anyway to the center // of the square then it's // not possible if (($half == $x || $half == $x - 1) && ($half == $y || $half == $y - 1)) echo "NO" ; // else yes it's possible else echo "YES" ; } // Driver code // initialize the size // of the square $n = 100; // initialize the dimension // of the painted square $x = 51; $y = 100; halfsquare($n, $x, $y); // This code is contributed // by anuj_67 ?>
Javascript
<script> // Java script program to illustrate // the above problem // function to check if it's possible to // divide the square in two equal parts function halfsquare(n,x,y) { let half = n / 2; // if the painted square is linked anyway // to the center of the square // then it's not possible if ((half == x || half == x - 1) && (half == y || half == y - 1)) document.write( "NO"); // else yes it's possible else document.write( "YES"); } // Driver code // initialize the size of the square let n = 100; // initialize the dimension of the painted square let x = 51, y = 100; halfsquare(n, x, y); // This code is contributed by sravan kumar Gottumukkala </script>
Producción:
YES