- Data Structure
- Networking
- RDBMS
- Operating System
- Java
- MS Excel
- iOS
- HTML
- CSS
- Android
- Python
- C Programming
- C++
- C#
- MongoDB
- MySQL
- Javascript
- PHP
- Physics
- Chemistry
- Biology
- Mathematics
- English
- Economics
- Psychology
- Social Studies
- Fashion Studies
- Legal Studies

- 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

To Continue Learning Please Login

Login with Google