给定三个正整数L , R和K。任务是从范围[L,R]中查找所有数字的计数,该范围包含至少一个数字除以数字K。
例子:
Input: L = 5, R = 11, K = 10
Output: 3
5, 10 and 11 are only such numbers.
Input: L = 32, R = 38, K = 13
Output: 0
方法:初始化计数= 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