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
Rearrangement of a number which is also divisible by it in C++
We are given an integer type number, let's say, number. The task is to rearrange number digit’s in such a manner that a number formed after rearrangement is also divisible by the given number i.e. ’number’.
Let us see various input output scenarios for this −
Input − int number = 100035
Output − Rearrangement of a number which is also divisible by it is: 300105
Explanation − we are given an integer number as ‘number’ i.e. 100035. Now, the task is to rearrange these given digits in such a manner that the formed number will be divisible by 100035. So, after rearranging the digits we got 300105 which is divisible by the number 100035.
Input − int number = 1000035
Output − Rearrangement of a number which is also divisible by it is: 3000105
Explanation − we are given an integer number as ‘number’ i.e. 1000035. Now, the task is to rearrange these given digits in such a manner that the formed number will be divisible by 1000035. So, after rearranging the digits we got 3000105 which is divisible by the number 1000035.
Input − int number = 28
Output − Rearrangement of a number which is also divisible by it is: -1
Explanation − we are given an integer number as ‘number’ i.e. 28. Now, the task is to rearrange these given digits in such a manner that the formed number will be divisible by 28. So after rearranging the digits we got 82 which isn’t divisible by the number 28 therefore the output is -1.
Approach used in the below program is as follows
Input a variable of integer type, let’s say, number and Pass the data to the function Rearrangement(number ).
-
Inside the function Rearrangement(number)
Create a variable of type vector which is storing integer type variables, let’s say, vec(10, 0).
Call the function total_count(number, vec) and pass number and vec as a parameter to the function.
Start loop FOR from i to 2 till i less than 10. Inside the loop, set temp to number * i.
Create a variable of type vector which is storing integer type variables, let’s say, vec_2(10, 0).
Call the function total_count(number, vec_2) and pass number and vec_2 as a parameter to the function.
Check IF equal(vec.begin(), vec.end(), vec_2.begin()) then return temp. ELSE, return -1.
-
Inside the function total_count(int number, vector<int> &vec_3)
Start loop WHILE number is 1. Inside the loop, set vec_3 as vec_3[number % 10]++ and number to number / 10.
Example
#include<bits/stdc++.h>
using namespace std;
void total_count(int number, vector<int> &vec_3){
while(number){
vec_3[number % 10]++;
number = number / 10;
}
}
int Rearrangement(int number){
vector<int> vec(10, 0);
total_count(number, vec);
for(int i = 2; i < 10; i++){
int temp = number * i;
vector<int> vec_2(10, 0);
total_count(temp, vec_2);
if(equal(vec.begin(), vec.end(), vec_2.begin())){
return temp;
}
}
return -1;
}
int main(){
int number = 100035;
cout<<"Rearrangement of a number which is also divisible by it is: "<<Rearrangement(number);
return 0;
}
Output
If we run the above code it will generate the following Output
Rearrangement of a number which is also divisible by it is: 300105