Учитывая положительное число n, подсчитайте все различные пары неотрицательных целых чисел (x, y), которые удовлетворяют неравенству x * x + y * y <n.
Примеры:
Input: n = 5
Output: 6
The pairs are (0, 0), (0, 1), (1, 0), (1, 1), (2, 0), (0, 2)
Input: n = 6
Output: 8
The pairs are (0, 0), (0, 1), (1, 0), (1, 1), (2, 0), (0, 2),
(1, 2), (2, 1)
Простое решение — запустить два цикла. Внешний цикл выполняется для всех возможных значений x (от 0 до √n). Внутренние циклы выбирают все возможные значения y для текущего значения x (выбираемого внешним циклом). Ниже приводится реализация простого решения.
C ++
#include <iostream>
using namespace std;
int countSolutions( int n)
{
int res = 0;
for ( int x = 0; x*x < n; x++)
for ( int y = 0; x*x + y*y < n; y++)
res++;
return res;
}
int main()
{
cout << "Total Number of distinct Non-Negative pairs is "
<< countSolutions(6) << endl;
return 0;
}
|
Джава
import java.io.*;
class GFG
{
static int countSolutions( int n)
{
int res = 0 ;
for ( int x = 0 ; x * x < n; x++)
for ( int y = 0 ; x * x + y * y < n; y++)
res++;
return res;
}
public static void main(String args[])
{
System.out.println ( "Total Number of distinct Non-Negative pairs is "
+countSolutions( 6 ));
}
}
|
python3
def countSolutions(n):
res = 0
x = 0
while (x * x < n):
y = 0
while (x * x + y * y < n):
res = res + 1
y = y + 1
x = x + 1
return res
if __name__ = = '__main__' :
print ( "Total Number of distinct Non-Negative pairs is " ,
countSolutions( 6 ))
|
C #
using System;
class GFG {
static int countSolutions( int n)
{
int res = 0;
for ( int x = 0; x*x < n; x++)
for ( int y = 0; x*x + y*y < n; y++)
res++;
return res;
}
public static void Main()
{
Console.WriteLine( "Total Number of "
+ "distinct Non-Negative pairs is "
+ countSolutions(6));
}
}
|
PHP
<?php
function countSolutions( $n )
{
$res = 0;
for ( $x = 0; $x * $x < $n ; $x ++)
for ( $y = 0; $x * $x + $y * $y < $n ; $y ++)
$res ++;
return $res ;
}
{
echo "Total Number of distinct Non-Negative pairs is " ;
echo countSolutions(6) ;
return 0;
}
?>
|
Выход:
Total Number of distinct Non-Negative pairs is 8
Верхняя оценка временной сложности указанного решения — O (n). Внешний цикл выполняется √n раз. Внутренний цикл выполняется не более √n раз.
Используя эффективное решение , мы можем найти счет за O (√n) времени. Идея состоит в том, чтобы сначала найти количество всех значений y, соответствующих 0 значению x. Пусть количество различных значений y будет равно yCount. Мы можем найти yCount, запустив цикл и сравнив yCount * yCount с n.
После того, как у нас есть начальное значение yCount, мы можем одно за другим увеличить значение x и найти следующее значение yCount, уменьшив значение yCount.
C ++
#include <iostream>
using namespace std;
int countSolutions( int n)
{
int x = 0, yCount, res = 0;
for (yCount = 0; yCount*yCount < n; yCount++) ;
while (yCount != 0)
{
res += yCount;
x++;
while (yCount != 0 && (x*x + (yCount-1)*(yCount-1) >= n))
yCount--;
}
return res;
}
int main()
{
cout << "Total Number of distinct Non-Negative pairs is "
<< countSolutions(6) << endl;
return 0;
}
|
Джава
import java.io.*;
class GFG
{
static int countSolutions( int n)
{
int x = 0 , yCount, res = 0 ;
for (yCount = 0 ; yCount * yCount < n; yCount++) ;
while (yCount != 0 )
{
res += yCount;
x++;
while (yCount != 0 && (x * x + (yCount - 1 )
* (yCount - 1 ) >= n))
yCount--;
}
return res;
}
public static void main(String args[])
{
System.out.println ( "Total Number of distinct Non-Negative pairs is "
+countSolutions( 6 )) ;
}
}
|
python3
def countSolutions(n):
x = 0
res = 0
yCount = 0
while (yCount * yCount < n):
yCount = yCount + 1
while (yCount ! = 0 ):
res = res + yCount
x = x + 1
while (yCount ! = 0 and (x * x
+ (yCount - 1 ) *
(yCount - 1 ) > = n)):
yCount = yCount - 1
return res
print ( "Total Number of distinct " ,
"Non-Negative pairs is "
, countSolutions( 6 ))
|
C #
using System;
class GFG {
static int countSolutions( int n)
{
int x = 0, yCount, res = 0;
for (yCount = 0; yCount * yCount < n;
yCount++) ;
while (yCount != 0)
{
res += yCount;
x++;
while (yCount != 0 && (x * x +
(yCount - 1) *
(yCount - 1) >= n))
yCount--;
}
return res;
}
public static void Main()
{
Console.WriteLine( "Total Number of "
+ "distinct Non-Negative pairs is "
+ countSolutions(6)) ;
}
}
|
PHP
<?php
function countSolutions( $n )
{
$x = 0; $yCount ; $res = 0;
for ( $yCount = 0; $yCount * $yCount < $n ;
$yCount ++) ;
while ( $yCount != 0)
{
$res += $yCount ;
$x ++;
while ( $yCount != 0 and ( $x * $x +
( $yCount -1) * ( $yCount -1) >= $n ))
$yCount --;
}
return $res ;
}
echo "Total Number of distinct Non-Negative" ,
"pairs is " , countSolutions(6) , "\n" ;
?>
|
Выход:
Total Number of distinct Non-Negative pairs is 8
Сложность по времени вышеупомянутого решения кажется больше, но если мы посмотрим поближе, мы увидим, что это O (√n). На каждом шаге во внутреннем цикле значение yCount уменьшается на 1. Значение yCount может уменьшаться не более O (√n) раз, поскольку yCount равно количеству значений y для x = 0. Во внешнем цикле значение x равно увеличивается. Значение x также может увеличиваться не более O (√n) раз, так как последний x для yCount равен 1.
Эта статья предоставлена Сачин Гупта . Пожалуйста, пишите комментарии, если вы обнаружите что-то неправильное или вы хотите поделиться дополнительной информацией по обсуждаемой выше теме.
Рекомендуемые посты:
- Подсчитайте индексные пары, которые удовлетворяют данному условию
- Подсчитать триплетные пары (A, B, C) точек в двумерном пространстве, которые удовлетворяют данному условию
- Пары из массива, которые удовлетворяют заданному условию
- Количество подпоследовательностей, которые удовлетворяют данному условию
- Количество индексов в массиве, которые удовлетворяют данному условию
- Количество возможных N цифр, которые удовлетворяют заданным условиям
- Подсчитать все возможные N цифр, которые удовлетворяют данному условию
- Все возможные пары взаимно простых элементов в диапазоне [L, R]
- Найти количество различных пар вершин, которые имеют расстояние ровно k в дереве
- Общее количество отличных пар из двух массивов, так что второе число может быть получено путем инвертирования битов первого
- Неравенство Несбитта
- Считайте четкие прямоугольники на шахматной доске N * N
- Подсчитать количество различных подстрок заданной длины
- Количество различных графов, которые могут быть сформированы с N вершинами
- Количество N-значных чисел со всеми разными цифрами
Подсчитать различные неотрицательные целочисленные пары (x, y), удовлетворяющие неравенству x * x + y * y <n
0.00 (0%) 0 votes