
Data Structure
Networking
RDBMS
Operating System
Java
MS Excel
iOS
HTML
CSS
Android
Python
C Programming
C++
C#
MongoDB
MySQL
Javascript
PHP
- Selected Reading
- UPSC IAS Exams Notes
- Developer's Best Practices
- Questions and Answers
- Effective Resume Writing
- HR Interview Questions
- Computer Glossary
- Who is Who
Count Numbers in Range with Unequal Digits in C++
Given two numbers start and end as range variables and an integer q as input. The goal is to find the numbers within a range such that the number and its product with q have no common digits.
If the number is 5 and q is 3 then the product will be 15. Both 5 and 15 have a common digit 5.
If the number is 2 and q is 5 then the product will be 10. Both 2 and 10 have no common digit.
Let us understand with examples.
For Example
Input - start = 5, end = 10, q = 2
Output - Count of numbers in range such that digits in it and its product with q are unequal are: 5
Explanation - Numbers will be:
- 5 ( 5 * 2 = 10 )
- 6 ( 6 * 2 = 12 )
- 7 ( 7 * 2 = 14 )
- 8 ( 8 * 2 = 16 )
- 9 ( 9 * 2 = 18 )
Input - start = 20, end = 25, q = 5
Output - Count of numbers in range such that digits in it and it's product with q are unequal are: 2
Explanation - Numbers will be:
- 22 ( 22 * 5 = 110 )
- 23 ( 23 * 5 = 115 )
Approach used in the below program is as follows
In this approach we will traverse from start to end and convert each number and its product with q to strings. Now create an array arr[26] which will store counts of characters of current number. Now traverse string of product (current number * q) and if any character of that string has non-zero value in arr[] then it is common so return 0. Otherwise return 1.
- Take range variables and a value q.
- Function check(int i, int q) takes a number i and q and returns 1 if digits of i and q are unequal or not common.
- Convert i to string using str = to_string(i).
- Convert product ( temp=q*i ) to sting using str_2 = to_string(temp).
- Take frequency array arr[26] = { 0 } for counts of characters of str.
- Traverse str using for loop and update frequencies using arr[str[j] - '0']++.
- Traverse str_2 using a for loop and check if any arr[str_2[j] - '0'] is non-zero, if yes then its common. Return 0.
- Otherwise return 1.
- Function unequal(int start, int end, int q) takes range variables and q and returns the count of numbers in range such that digits in it and it's product with q are unequal.
- Take the initial count as 0.
- Traverse numbers using for loop from i-start to i=end.
- Using check(i, q) find if number i and its product with q have no digits common. If yes then increment count.
- At the end return count as result.
Example
#include <bits/stdc++.h> using namespace std; int check(int i, int q) { string str = to_string(i); int length = str.size(); int arr[26] = { 0 }; int temp = i * q; string str_2 = to_string(temp); int length_2 = str_2.size(); for (int j = 0; j < length; j++) { arr[str[j] - '0']++; } for (int j = 0; j < length_2; j++) { if (arr[str_2[j] - '0']) { return 0; } } return 1; } int unequal(int start, int end, int q) { int count = 0; for (int i = start; i <= end; i++) { if (check(i, q)) { count++; } } return count; } int main() { int start = 20, end = 40, q = 4; cout << "Count of numbers in range such that digits in it and it's product with q are unequal are: " << unequal(start, end, q); return 0; }
If we run the above code it will generate the following output −
Output
Count of numbers in range such that digits in it and it's product with q are unequal are: 1