Encuentra el número de pares (a, b) tales que a % b = K

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:
 

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>
Producción: 

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

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *