Recuento de Rectángulos distintos máximos posibles con perímetro dado

Dado un número entero N que denota el perímetro de un rectángulo. La tarea es encontrar el número de rectángulos distintos posibles con un perímetro dado. 

Ejemplos

Entrada: N = 10
Salida: 4
Explicación: Todos los rectángulos con perímetro 10 son siguientes en forma de (largo, ancho):
(1, 4), (4, 1), (2, 3), (3, 2 )

Entrada: N = 8
Salida: 3

 

Enfoque: Este problema se puede resolver usando las propiedades de los rectángulos. Siga los pasos a continuación para resolver el problema dado.

  • El perímetro de un rectángulo es 2*(largo + ancho) .
  • Si N es impar , entonces no hay rectángulo posible. Como el perímetro nunca puede ser impar .
  • Si N es menor que 4 , entonces tampoco puede haber ningún rectángulo posible. Como la longitud mínima posible de un lado es 1 , aunque la longitud de todos los lados sea 1 , el perímetro también será 4 .
  • Ahora N = 2*(l + b) y (l + b) = N/2 .
  • Entonces, se requiere encontrar todos los pares cuya suma sea N/2 que es (N/2) – 1 .

A continuación se muestra la implementación del enfoque anterior.

C++

#include <iostream>
using namespace std;
 
// Function to find the maximum number
// of distinct rectangles with given perimeter
void maxRectanglesPossible(int N)
{
    // Invalid case
    if (N < 4 || N % 2 != 0) {
        cout << -1 << "\n";
    }
    else
        // Number of distinct rectangles.
        cout << (N / 2) - 1 << "\n";
}
 
// Driver Code
int main()
{
 
    // Perimeter of the rectangle.
    int N = 20;
 
    maxRectanglesPossible(N);
 
    return 0;
}

Java

// Java program for the above approach
import java.io.*;
import java.lang.*;
import java.util.*;
 
class GFG {
 
// Function to find the maximum number
// of distinct rectangles with given perimeter
static void maxRectanglesPossible(int N)
{
   
    // Invalid case
    if (N < 4 || N % 2 != 0) {
        System.out.println(-1);
    }
    else
        // Number of distinct rectangles.
       System.out.println((N / 2) - 1);
}
 
// Driver Code
    public static void main (String[] args) {
          // Perimeter of the rectangle.
        int N = 20;
 
        maxRectanglesPossible(N);
    }
}
 
// This code is contributed by hrithikgarg0388.

Python3

# Function to find the maximum number
# of distinct rectangles with given perimeter
def maxRectanglesPossible (N):
 
    # Invalid case
    if (N < 4 or N % 2 != 0):
        print("-1");
    else:
        # Number of distinct rectangles.
        print(int((N / 2) - 1));
 
 
# Driver Code
 
# Perimeter of the rectangle.
N = 20;
maxRectanglesPossible(N);
 
# This code is contributed by gfgking

C#

// C# program for the above approach
using System;
class GFG {
 
// Function to find the maximum number
// of distinct rectangles with given perimeter
static void maxRectanglesPossible(int N)
{
   
    // Invalid case
    if (N < 4 || N % 2 != 0) {
        Console.WriteLine(-1);
    }
    else
        // Number of distinct rectangles.
       Console.WriteLine((N / 2) - 1);
}
 
// Driver Code
    public static void Main () {
          // Perimeter of the rectangle.
        int N = 20;
 
        maxRectanglesPossible(N);
    }
}
 
// This code is contributed by Samim Hossain Mondal.

Javascript

<script>
 
    // Function to find the maximum number
    // of distinct rectangles with given perimeter
    const maxRectanglesPossible = (N) => {
     
        // Invalid case
        if (N < 4 || N % 2 != 0) {
            document.write("-1<br/>");
        }
        else
            // Number of distinct rectangles.
            document.write(`${(N / 2) - 1}<br/>`);
    }
 
    // Driver Code
 
    // Perimeter of the rectangle.
    let N = 20;
    maxRectanglesPossible(N);
 
// This code is contributed by rakeshsahni
 
</script>
Producción

9

Tiempo Complejidad: O(1) 
Espacio Auxiliar: O(1)

Publicación traducida automáticamente

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