Contar números cuya diferencia desde el reverso es un producto de k

Dados dos números l y r. Cuente los números totales entre l y r que al restarlos de su respectivo reverso, la diferencia es un producto de k.
Ejemplos: 
 

Input : 20 23 6
Output : 2
20 and 22 are the two numbers.
|20-2| = 18 which is a product of 6
|22-22| = 0 which is a product of 6

Input : 35 45 5
Output : 2
38 and 44 are the two numbers.
|38-83| = 45 which is a product of 5
|44-44| = 0 which is a product of 5

Enfoque: para cada número entre el rango dado, verifique si la diferencia entre el número y su número inverso es divisible por k, incremente la cuenta si es así. 
 

C++

// C++ program to Count the numbers
// within a given range in which when
// you subtract a number from its
// reverse, the difference is a product
// of k
#include <iostream>
using namespace std;
 
bool isRevDiffDivisible(int x, int k)
{
    // function to check if the number
    // and its reverse have their
    // absolute difference divisible by k
    int n = x;
    int m = 0;
    int flag;
    while (x > 0)
    {  
        // reverse the number
        m = m * 10 + x % 10;
        x /= 10;
    }
     
    return (abs(n - m) % k == 0);
}
 
int countNumbers(int l, int r, int k)
{
    int count = 0;
    for (int i = l; i <= r; i++)   
        if (isRevDiffDivisible(i, k))       
            ++count;
    return count;
}
 
// Driver code
int main()
{
    int l = 20, r = 23, k = 6;
    cout << countNumbers(l, r, k) << endl;
    return 0;
}

Java

// Java program to Count the
// numbers within a given range
// in which when you subtract
// a number from its reverse,
// the difference is a product of k
import java.io.*;
import java.math.*;
 
class GFG {
     
    static boolean isRevDiffDivisible(int x, int k)
    {
        // function to check if the number
        // and its reverse have their
        // absolute difference divisible by k
        int n = x;
        int m = 0;
        int flag;
        while (x > 0)
        {
            // reverse the number
            m = m * 10 + x % 10;
            x /= 10;
        }
         
        return (Math.abs(n - m) % k == 0);
    }
     
    static int countNumbers(int l, int r, int k)
    {
        int count = 0;
        for (int i = l; i <= r; i++)
            if (isRevDiffDivisible(i, k))    
                ++count;
        return count;
    }
     
    // Driver code
    public static void main(String args[])
    {
        int l = 35, r = 45, k = 5;
        System.out.println(countNumbers(l, r, k));
    }
}
 
// This code is contributed
// by Nikita Tiwari.

Python3

# Python 3 program to Count the numbers
# within a given range in which when you
# subtract a number from its reverse,
# the difference is a product of k
 
def isRevDiffDivisible(x, k) :
    # function to check if the number
    # and its reverse have their
    # absolute difference divisible by k
    n = x; m = 0
    while (x > 0) :
 
        # Reverse the number
        m = m * 10 + x % 10
        x = x // 10
         
    return (abs(n - m) % k == 0)
 
def countNumbers(l, r, k) :
    count = 0
    for i in range(l, r + 1) :
 
        if (isRevDiffDivisible(i, k)) :
            count = count + 1
     
    return count
     
     
# Driver code
l = 20; r = 23; k = 6
print(countNumbers(l, r, k))
 
 
# This code is contributed by Nikita Tiwari.

C#

// C# program to Count the
// numbers within a given range
// in which when you subtract
// a number from its reverse,
// the difference is a product of k
using System;
 
class GFG {
     
    static bool isRevDiffDivisible(int x, int k)
    {
        // function to check if the number
        // and its reverse have their
        // absolute difference divisible by k
        int n = x;
        int m = 0;
         
        // int flag;
        while (x > 0)
        {
            // reverse the number
            m = m * 10 + x % 10;
            x /= 10;
        }
         
        return (Math.Abs(n - m) % k == 0);
    }
     
    static int countNumbers(int l, int r, int k)
    {
        int count = 0;
         
        for (int i = l; i <= r; i++)
            if (isRevDiffDivisible(i, k))
                ++count;
        return count;
    }
     
    // Driver code
    public static void Main()
    {
        int l = 35, r = 45, k = 5;
        Console.WriteLine(countNumbers(l, r, k));
    }
}
 
// This code is contributed
// by vt_m.

PHP

<?php
// PHP program to Count the
// numbers within a given
// range in which when you
// subtract a number from
// its reverse, the difference
// is a product of k
function isRevDiffDivisible($x, $k)
{
    // function to check if
    // the number and its
    // reverse have their
    // absolute difference
    // divisible by k
    $n = $x;
    $m = 0;
    $flag;
    while ($x > 0)
    {
        // reverse the number
        $m = $m * 10 + $x % 10;
        $x = (int)$x / 10;
    }
     
    return (abs($n - $m) %
                $k == 0);
}
 
function countNumbers($l, $r, $k)
{
    $count = 0;
    for ($i = $l; $i <= $r; $i++)
        if (isRevDiffDivisible($i, $k))
            ++$count;
    return $count;
}
 
// Driver code
$l = 20; $r = 23; $k = 6;
echo countNumbers($l, $r, $k);
 
// This code is contributed by mits.
?>

Javascript

<script>
// javascript program to Count the
// numbers within a given range
// in which when you subtract
// a number from its reverse,
// the difference is a product of k
 
function isRevDiffDivisible(x , k)
{
    // function to check if the number
    // and its reverse have their
    // absolute difference divisible by k
    var n = x;
    var m = 0;
    var flag;
    while (x > 0)
    {
        // reverse the number
        m = m * 10 + x % 10;
        x = parseInt(x/10);
    }
     
    return (Math.abs(n - m) % k == 0);
}
 
function countNumbers(l , r , k)
{
    var count = 0;
    for (i = l; i <= r; i++)
        if (isRevDiffDivisible(i, k))    
            count++;
    return count;
}
     
// Driver code
 
var l = 35, r = 45, k = 5;
document.write(countNumbers(l, r, k));
 
// This code contributed by Princi Singh
 
</script>

Producción: 

2

Complejidad de tiempo: O (nlogn)

Espacio Auxiliar: O(1)
 

Publicación traducida automáticamente

Artículo escrito por IshwarGupta 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 *