📌  相关文章
📜  [L,R]范围内的数字计数,其中至少包含一个除以K的数字

📅  最后修改于: 2021-04-23 20:31:18             🧑  作者: Mango

给定三个正整数LRK。任务是从范围[L,R]中查找所有数字的计数,该范围包含至少一个数字除以数字K。

例子:

方法:初始化计数= 0 ,对于[L,R]范围内的每个元素,检查其是否包含至少一个除以K的数字。如果是,则增加计数。

下面是上述方法的实现:

C++
// C++ implementation of the approach
#include 
using namespace std;
  
// Function that returns true if num
// contains at least one digit
// that divides k
bool digitDividesK(int num, int k)
{
    while (num) {
  
        // Get the last digit
        int d = num % 10;
  
        // If the digit is non-zero
        // and it divides k
        if (d != 0 and k % d == 0)
            return true;
  
        // Remove the last digit
        num = num / 10;
    }
  
    // There is no digit in num
    // that divides k
    return false;
}
  
// Function to return the required
// count of elements from the given
// range which contain at least one
// digit that divides k
int findCount(int l, int r, int k)
{
  
    // To store the result
    int count = 0;
  
    // For every number from the range
    for (int i = l; i <= r; i++) {
  
        // If any digit of the current
        // number divides k
        if (digitDividesK(i, k))
            count++;
    }
    return count;
}
  
// Driver code
int main()
{
    int l = 20, r = 35;
    int k = 45;
  
    cout << findCount(l, r, k);
  
    return 0;
}


Java
// Java implementation of the approach 
  
class GFG
{
    // Function that returns true if num 
    // contains at least one digit 
    // that divides k 
    static boolean digitDividesK(int num, int k) 
    { 
        while (num != 0) 
        { 
      
            // Get the last digit 
            int d = num % 10; 
      
            // If the digit is non-zero 
            // and it divides k 
            if (d != 0 && k % d == 0) 
                return true; 
      
            // Remove the last digit 
            num = num / 10; 
        } 
      
        // There is no digit in num 
        // that divides k 
        return false; 
    } 
      
    // Function to return the required 
    // count of elements from the given 
    // range which contain at least one 
    // digit that divides k 
    static int findCount(int l, int r, int k) 
    { 
      
        // To store the result 
        int count = 0; 
      
        // For every number from the range 
        for (int i = l; i <= r; i++) 
        { 
      
            // If any digit of the current 
            // number divides k 
            if (digitDividesK(i, k)) 
                count++; 
        } 
        return count; 
    } 
      
    // Driver code 
    public static void main(String []args)
    { 
        int l = 20, r = 35; 
        int k = 45; 
      
        System.out.println(findCount(l, r, k)); 
    } 
}
  
// This code is contributed by PrinciRaj1992


Python3
# Python3 implementation of the approach
  
# Function that returns true if num
# contains at least one digit
# that divides k
def digitDividesK(num, k):
    while (num):
  
        # Get the last digit
        d = num % 10
  
        # If the digit is non-zero
        # and it divides k
        if (d != 0 and k % d == 0):
            return True
  
        # Remove the last digit
        num = num // 10
  
    # There is no digit in num
    # that divides k
    return False
  
# Function to return the required
# count of elements from the given
# range which contain at least one
# digit that divides k
def findCount(l, r, k):
  
    # To store the result
    count = 0
  
    # For every number from the range
    for i in range(l, r + 1):
  
        # If any digit of the current
        # number divides k
        if (digitDividesK(i, k)):
            count += 1
  
    return count
  
# Driver code
l = 20
r = 35
k = 45
  
print(findCount(l, r, k))
  
# This code is contributed by Mohit Kumar


C#
// C# implementation of the approach 
using System;
  
class GFG
{
    // Function that returns true if num 
    // contains at least one digit 
    // that divides k 
    static bool digitDividesK(int num, int k) 
    { 
        while (num != 0) 
        { 
      
            // Get the last digit 
            int d = num % 10; 
      
            // If the digit is non-zero 
            // and it divides k 
            if (d != 0 && k % d == 0) 
                return true; 
      
            // Remove the last digit 
            num = num / 10; 
        } 
      
        // There is no digit in num 
        // that divides k 
        return false; 
    } 
      
    // Function to return the required 
    // count of elements from the given 
    // range which contain at least one 
    // digit that divides k 
    static int findCount(int l, int r, int k) 
    { 
      
        // To store the result 
        int count = 0; 
      
        // For every number from the range 
        for (int i = l; i <= r; i++) 
        { 
      
            // If any digit of the current 
            // number divides k 
            if (digitDividesK(i, k)) 
                count++; 
        } 
        return count; 
    } 
      
    // Driver code 
    public static void Main()
    { 
        int l = 20, r = 35; 
        int k = 45; 
      
        Console.WriteLine(findCount(l, r, k)); 
    } 
}
  
// This code is contributed by AnkitRai01


输出:
10