Dados dos enteros N y K donde N, K > 0 , la tarea es encontrar el número total de pares (a, b) donde 1 ≤ a, b ≤ N tal que a % b = K .
Ejemplos:
Entrada: N = 4, K = 2
Salida: 2 Los
únicos pares válidos son (2, 3) y (2, 4).
Entrada: N = 11, K = 5
Salida: 7
Enfoque ingenuo: ejecute dos bucles de 1 a n y cuente todos los pares (i, j) donde i % j = K . La complejidad temporal de este enfoque será O(n 2 ) .
Enfoque eficiente: Inicialmente cuenta total = N – K porque todos los números del rango que son > K darán K como el resto después de dividirlo. Después de eso, para todo i > K hay exactamente (N – K)/i números que darán un resto como K después de dividirse por i .
A continuación se muestra la implementación del enfoque anterior:
C++
// C++ implementation of the approach #include <bits/stdc++.h> using namespace std; // Function to return the count // of required pairs int CountAllPairs(int N, int K) { int count = 0; if (N > K) { // Initial count count = N - K; for (int i = K + 1; i <= N; i++) count = count + ((N - K) / i); } return count; } // Driver code int main() { int N = 11, K = 5; cout << CountAllPairs(N, K); return 0; }
Java
// Java implementation of the approach import java.io.*; class GFG { // Function to return the count // of required pairs static int CountAllPairs(int N, int K) { int count = 0; if (N > K) { // Initial count count = N - K; for (int i = K + 1; i <= N; i++) count = count + ((N - K) / i); } return count; } // Driver code public static void main(String[] args) { int N = 11, K = 5; System.out.println(CountAllPairs(N, K)); } }
Python3
# Python3 implementation of the approach import math # Function to return the count # of required pairs def CountAllPairs(N, K): count = 0 if( N > K): # Initial count count = N - K for i in range(K + 1, N + 1): count = count + ((N - K) // i) return count # Driver code N = 11 K = 5 print(CountAllPairs(N, K))
C#
// C# implementation of the approach using System; class GFG { // Function to return the count // of required pairs static int CountAllPairs(int N, int K) { int count = 0; if (N > K) { // Initial count count = N - K; for (int i = K + 1; i <= N; i++) count = count + ((N - K) / i); } return count; } // Driver code public static void Main() { int N = 11, K = 5; Console.WriteLine(CountAllPairs(N, K)); } }
PHP
<?php // PHP implementation of the approach // Function to return the count // of required pairs function CountAllPairs($N, $K) { $count = 0; if( $N > $K){ // Initial count $count = $N - $K; for($i = $K+1; $i <= $N ; $i++) { $x = ((($N - $K) / $i)); $count = $count + (int)($x); } } return $count; } // Driver code $N = 11; $K = 5; echo(CountAllPairs($N, $K)); ?>
Javascript
<script> // JavaScript implementation of the approach // Function to return the count // of required pairs function CountAllPairs( N, K) { let count = 0; if (N > K) { // Initial count count = N - K; for (let i = K + 1; i <= N; i++) count = count + parseInt((N - K) / i); } return count; } // Driver code let N = 11, K = 5; document.write(CountAllPairs(N, K)); //contributed by sravan (171fa07058) </script>
7
Publicación traducida automáticamente
Artículo escrito por Chandan_Agrawal y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA