Número máximo de cuadrados de 2 × 2 que pueden caber dentro de un triángulo isósceles rectángulo

¿Cuál es el número máximo de cuadrados de tamaño 2 × 2 unidades que pueden caber en un triángulo isósceles de ángulo recto de una base dada (en unidades)? 
Un lado del cuadrado debe ser paralelo a la base del triángulo. 

Ejemplos: 

Input  : 8
Output : 6
Please refer below diagram for explanation.

Input : 7
Output : 3

Como el triángulo es isósceles, la base dada también sería igual a la altura. Ahora en la parte diagonal, siempre necesitaríamos una longitud extra de 2 unidades tanto en la altura como en la base del triángulo para acomodar un triángulo. (El segmento CF y AM del triángulo en la imagen. La parte que no contribuye a ningún cuadrado). En la longitud restante de la base, podemos construir longitud / 2 cuadrados. Como cada cuadrado es de 2 unidades, lo mismo sería el caso de la altura, no hay necesidad de calcular eso nuevamente. 
Entonces, para cada nivel de longitud dada, podemos construir cuadrados «(longitud-2)/2». Esto nos da una base de «(longitud-2)» encima. Continuando con este proceso para obtener el número de cuadrados para todas las alturas de «longitud-2» disponibles, podemos calcular los cuadrados. 

while length > 2
    answer += (length - 2 )/2
    length = length - 2

Para una forma más efectiva, podemos usar la fórmula de la suma de AP n * ( n + 1 ) / 2, donde n = longitud – 2 

C++

// C++ program to count number of 2 x 2
// squares in a right isosceles triangle
#include<bits/stdc++.h>
using namespace std;
 
int numberOfSquares(int base)
{
   // removing the extra part we would
   // always need
   base = (base - 2);
 
   // Since each square has base of
   // length of 2
   base = floor(base / 2);
 
   return base * (base + 1)/2;
}
 
// Driver code
int main()
{
   int base = 8;
   cout << numberOfSquares(base);
   return 0;
}
// This code is improved by heroichitesh.

Java

// Java program to count number of 2 x 2
// squares in a right isosceles triangle
 
class Squares
{
  public static  int numberOfSquares(int base)
   {
      // removing the extra part
      // we would always need
      base = (base - 2);
  
      // Since each square has
      // base of length of 2
      base = Math.floorDiv(base, 2);
  
      return base * (base + 1)/2;
   }
  
   // Driver code
   public static void main(String args[])
   {
       
      int base = 8;
      System.out.println(numberOfSquares(base));
   }
}
 
// This code is contributed by Anshika Goyal and improved by heroichitesh.

Python3

# Python3 program to count number
# of 2 x 2 squares in a right
# isosceles triangle
def numberOfSquares(base):
     
    # removing the extra part we would
    # always need
    base = (base - 2)
     
    # Since each square has base of
    # length of 2
    base = base // 2
     
    return base * (base + 1) / 2
     
# Driver code
base = 8
 
print(numberOfSquares(base))
 
# This code is contributed by Anant Agarwal and improved by heroichitesh.

C#

// C# program to count number of 2 x 2
// squares in a right isosceles triangle
using System;
 
class GFG {
     
    public static int numberOfSquares(int _base)
    {
         
        // removing the extra part
        // we would always need
        _base = (_base - 2);
     
        // Since each square has
        // base of length of 2
        _base = _base / 2;
     
        return _base * (_base + 1)/2;
    }
     
    // Driver code
    public static void Main()
    {
         
        int _base = 8;
        Console.WriteLine(numberOfSquares(_base));
    }
}
 
// This code is contributed by anuj_67.

PHP

<?php
// PHP program to count number of 2 x 2
// squares in a right isosceles triangle
 
    function numberOfSquares( $base)
    {
         
        // removing the extra
        // part we would
        // always need
        $base = ($base - 2);
         
        // Since each square
        // has base of
        // length of 2
        $base = intdiv($base, 2);
     
        return $base * ($base + 1)/2;
    }
 
// Driver code
$base = 8;
echo numberOfSquares($base);
 
// This code is contributed by anuj_67 and improved by heroichitesh.
?>

Javascript

<script>
 
    // Program to count number of 2 x 2
    // squares in a right isosceles triangle
     
    function numberOfSquares(base)
    {
         
        // Removing the extra part we would
        // always need
        base = (base - 2);
         
        // Since each square has base of
        // length of 2
        base = Math.floor(base / 2);
         
        return base * (base + 1) / 2;
    }
     
    // Driver code
    let base = 8;
    document.write(numberOfSquares(base));
     
    // This code is contributed by Mayank Tyagi
 
</script>

Producción: 

6

Complejidad del tiempo : O(1)

Espacio Auxiliar : O(1)

Este artículo es una contribución de Harshit Agrawal . Si te gusta GeeksforGeeks y te gustaría contribuir, también puedes escribir un artículo usando write.geeksforgeeks.org o enviar tu artículo por correo a review-team@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks.
Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.
 

Publicación traducida automáticamente

Artículo escrito por GeeksforGeeks-1 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 *