Given a range l – r (inclusive), count the numbers that are divisible by all of its non-zero digits.
Examples:
Input : 1 9 Output : 9 Explanation: all the numbers are divisible by their digits in the range 1-9. Input : 10 20 Output : 5 Explanation: 10, 11, 12, 15, 20
Approach:
1. Run a loop to generate every number from l and r.
2. Check if every non-zero digit of that number divides the number or not.
3. Keep a count of all numbers that are completely divisible by its digits.
4. Print the count of numbers.
Below is the implementation of the above approach:
C++
// C++ program to// Count numbers in// range L-R that are// divisible by// all of its non-zero// digits#include <bits/stdc++.h>using namespace std;// check if the number is // divisible by the digits.bool check(int n){ int m = n; while (n) { int r = n % 10; if (r > 0) if ((m % r) != 0) return false; n /= 10; } return true;}// function to calculate the// number of numbersint count(int l, int r){ int ans = 0; for (int i = l; i <= r; i++) if (check(i)) ans += 1; return ans;}// Driver functionint main(){ int l = 10, r = 20; cout << count(l, r); return 0;} |
Java
// Java program to Count // numbers in range L-R// that are divisible by// all of its non-zero // digitsimport java.io.*;class GFG { // check if the number // is divisible by the // digits. static boolean check(int n) { int m = n; while (n != 0) { int r = n % 10; if (r > 0) if ((m % r) != 0) return false; n /= 10; } return true; } // function to calculate // the number of numbers static int count(int l, int r) { int ans = 0; for (int i = l; i <= r; i++) if (check(i)) ans += 1; return ans; } // Driver function public static void main(String args[]) { int l = 10, r = 20; System.out.println(count(10, 20)); }}// This code is contributed by Nikita Tiwari. |
Python3
# Python 3 program# to Count numbers in# range L-R that are # divisible by all of# its non-zero digits# check if the number is # divisible by the digits.def check(n) : m = n while (n != 0) : r = n % 10 if (r > 0) : if ((m % r) != 0) : return False n = n // 10 return True # function to calculate the# number of numbersdef count(l, r) : ans = 0 for i in range(l, r+1) : if (check(i)) : ans = ans + 1 return ans# Driver functionl = 10r = 20print(count(l, r))# This code is contributed by Nikita Tiwari. |
C#
// Java program to Count // numbers in range L-R// that are divisible by// all of its non-zero // digitsusing System;class GFG { // check if the number // is divisible by the // digits. static bool check(int n) { int m = n; while (n != 0) { int r = n % 10; if (r > 0) if ((m % r) != 0) return false; n /= 10; } return true; } // function to calculate // the number of numbers static int count(int l, int r) { int ans = 0; for (int i = l; i <= r; i++) if (check(i)) ans += 1; return ans; } // Driver function public static void Main() { int l = 10, r = 20; Console.WriteLine(count(l, r)); }}// This code is contributed by Vt_m. |
PHP
<?php// PHP program to Count numbers// in range L-R that are// divisible by all of its // non-zero digits// check if the number is // divisible by the digits.function check($n){ $m = $n; while ($n) { $r = $n % 10; if ($r > 0) if (($m % $r) != 0) return false; $n /= 10; } return true;}// function to calculate the// number of numbersfunction countIn($l, $r){ $ans = 0; for ($i = $l; $i <= $r; $i++) if (check($i)) $ans += 1; return $ans;}// Driver function$l = 10; $r = 20;echo countIn($l, $r);// This code is contributed ajit?> |
Javascript
<script>// Javascript program to Count numbers// in range L-R that are// divisible by all of its// non-zero digits// check if the number is// divisible by the digits.function check(n){ let m = n; while (n) { let r = n % 10; if (r > 0) if ((n % r) != 0) return false; n /= 10; } return true;}// function to calculate the// number of numbersfunction countIn(l, r){ let ans = 0; for (let i = l; i <= r; i++) if (check(i)) ans += 1; return ans;}// Driver functionlet l = 10; let r = 20;document.write(countIn(l, r)); // This code is contributed by sravan kumar</script> |
Output:
5
Time Complexity: O((r-l) * log10r), where r represents the upper limit of the range and l denotes the lower limit of the given range
Auxiliary Space: O(1), no extra space is required, so it is a constant.
Ready to dive in? Explore our Free Demo Content and join our DSA course, trusted by over 100,000 neveropen!
