📜  计算与反向的差是k的乘积的数字

📅  最后修改于: 2021-04-24 19:47:38             🧑  作者: Mango

给定两个数字l和r。计算l和r之间的总数,当从它们各自的倒数中减去它们时,差是k的乘积。
例子:

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

方法:对于给定范围之间的每个数字,请检查数字与它的反向数字之间的差是否可被k整除,如果是,则递增计数。

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 
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
 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


输出:

2