📜  计算矩形的数量,使得边的比例在 [a,b] 范围内

📅  最后修改于: 2022-05-13 01:57:59.337000             🧑  作者: Mango

计算矩形的数量,使得边的比例在 [a,b] 范围内

给定 N 个矩形的长度和宽度和一个范围,即 [a, b],任务是计算边(大/小)比在 [a, b] 范围内的矩形的数量。
例子:

方法:在pairs数组中迭代,当max (a[i].first,a[i].second)/ min (a[i].first,a[i].second)位于范围 a 和 b。
下面是上述方法的实现:

C++
// C++ program to print the length of the shortest
// subarray with all elements greater than X
#include 
using namespace std;
 
// Function to count the number of ratios
int countRatios(pair arr[], int n,
                           double a, double b)
{
    int count = 0;
 
    // count the number of ratios
    // by iterating
    for (int i = 0; i < n; i++) {
 
        double large = max(arr[i].first, arr[i].second);
        double small = min(arr[i].first, arr[i].second);
 
        // find ratio
        double ratio = large / small;
 
        // check if lies in range
        if (ratio >= a && ratio <= b)
            count += 1;
    }
 
    return count;
}
 
// Driver Code
int main()
{
    pair arr[] = { { 165, 100 },
                             { 180, 100 },
                             { 100, 170 } };
    double a = 1.6, b = 1.7;
    int n = 3;
 
    cout << countRatios(arr, n, a, b);
 
    return 0;
}


Java
// Java program to print the length of the shortest
// subarray with all elements greater than X
class GFG
{
static int n = 3;
static class pair
{
    int first, second;
    public pair(int first, int second)
    {
        this.first = first;
        this.second = second;
    }
}
 
// Function to count the number of ratios
static int countRatios(pair []arr, int n,
                       double a, double b)
{
    int count = 0;
 
    // count the number of ratios
    // by iterating
    for (int i = 0; i < n; i++)
    {
        double large = Math.max(arr[i].first,
                                arr[i].second);
        double small = Math.min(arr[i].first,
                                arr[i].second);
 
        // find ratio
        double ratio = large / small;
 
        // check if lies in range
        if (ratio >= a && ratio <= b)
            count += 1;
    }
    return count;
}
 
// Driver Code
public static void main(String[] args)
{
    pair []arr = {new pair(165, 100),
                  new pair(180, 100),
                  new pair(100, 170)};
    double a = 1.6, b = 1.7;
    int n = 3;
 
    System.out.println(countRatios(arr, n, a, b));
}
}
 
// This code is contributed by PrinciRaj1992


Python3
# Python3 program to print the
# length of the shortest subarray
# with all elements greater than X
 
# Function to count the number of
# ratios
def countRatios(arr, n, a, b):
 
    count = 0
 
    # count the number of ratios
    # by iterating
    for i in range(n):
 
        large = max(arr[i][0],
                    arr[i][1])
        small = min(arr[i][0],
                    arr[i][1])
 
        # find ratio
        ratio = large / small
 
        # check if lies in range
        if (ratio >= a and
            ratio <= b):
            count += 1
 
    return count
 
# Driver Code
if __name__ == "__main__":
 
    arr = [[165, 100],
           [180, 100],
           [100, 170]]
    a = 1.6
    b = 1.7
    n = 3
    print(countRatios(arr, n, a, b))
 
# This code is contributed by Chitranayal


C#
// C# program to print the length of the shortest
// subarray with all elements greater than X
using System;
     
class GFG
{
static int n = 3;
class pair
{
    public int first, second;
    public pair(int first, int second)
    {
        this.first = first;
        this.second = second;
    }
}
 
// Function to count the number of ratios
static int countRatios(pair []arr, int n,
                       double a, double b)
{
    int count = 0;
 
    // count the number of ratios
    // by iterating
    for (int i = 0; i < n; i++)
    {
        double large = Math.Max(arr[i].first,
                                arr[i].second);
        double small = Math.Min(arr[i].first,
                                arr[i].second);
 
        // find ratio
        double ratio = large / small;
 
        // check if lies in range
        if (ratio >= a && ratio <= b)
            count += 1;
    }
    return count;
}
 
// Driver Code
public static void Main(String[] args)
{
    pair []arr = {new pair(165, 100),
                  new pair(180, 100),
                  new pair(100, 170)};
    double a = 1.6, b = 1.7;
    int n = 3;
 
    Console.WriteLine(countRatios(arr, n, a, b));
}
}
 
// This code is contributed by 29AjayKumar


Javascript


输出:
2