本文概述
给定三个正整数L, R和K。任务是找出在[L, R]范围内至少包含一个能除数K的数字的所有数。
例子:
输入:L = 5, R = 11, K = 10
输出:3 5、10和11就是这样的数字。
输入:L = 32, R = 38, K = 13
输出:0
方法:初始化count = 0,对于[L, R]范围内的每个元素,检查它是否包含至少一个除k的数字,如果是,则增加计数。
下面是上述方法的实现:
C ++
//C++ implementation of the approach
#include <bits/stdc++.h>
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