计算矩形的数量,使得边的比例在 [a,b] 范围内
给定 N 个矩形的长度和宽度和一个范围,即 [a, b],任务是计算边(大/小)比在 [a, b] 范围内的矩形的数量。
例子:
Input: {{165, 100}, {180, 100}, {100, 170}}, a = 1.6, b = 1.7
Output: 2
165/100 = 1.65
170/100 = 1.7
Input: {{10, 12}, {26, 19}}, a = 0.8, b = 1.2
Output: 1
方法:在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