Compruebe si cualquier cuadrado (con una celda de color) se puede dividir en dos partes iguales

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

Publicación traducida automáticamente

Artículo escrito por SrijaDe y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *