¿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