Home > Backend Development > C++ > body text

In C++, rearrange a number that can also be rearranged by it

王林
Release: 2023-09-05 22:49:06
forward
753 people have browsed it

In C++, rearrange a number that can also be rearranged by it

We give a number of integer type, assuming it is number. The task is to rearrange the digits of number so that the rearranged numbers are also divisible by the given number.

Let’s look at different input and output scenarios:

Input - int number = 100035

Output - Rearrange The last number that can be divided by number is: 300105

Explanation - We are given an integer number, which is 100035. Now, the task is to rearrange these given numbers so that the formed number is divisible by number 100035. So after rearranging the numbers we get 300105 which is divisible by the number 100035.

Input - int number = 1000035

Output - The rearranged number is also divisible by it: 3000105

Explanation - We are given an integer number "number", which is 1000035. Now, the task is to rearrange these given numbers so that the number formed is divisible by 1000035. So after rearranging the numbers we get 3000105 which is divisible by the number 1000035.

Input - int number = 28

Output - The rearranged number is also divisible by it: -1

Explanation - We are given an integer number "number", which is 28. Now, the task is to rearrange these given numbers so that the number formed is divisible by 28. So after rearranging the numbers we get 82 which is not divisible by the number 28 so the output is -1.

The method used in the following program is as follows

  • Enter a variable of integer type, assuming it is number, and pass the data to the function Rearrangement(number).

  • In the function Rearrangement(number)

    • Create a vector variable that stores an integer type variable, assuming it is vec(10, 0).

    • Call the function total_count(number, vec) and pass number and vec as parameters to the function.

    • Start with a loop from i to 2 until i is less than 10. Inside the loop, set temp to number * i.

    • Create a vector variable that stores an integer type variable, assuming it is vec_2(10, 0).

    • Call the function total_count(number, vec_2) and pass number and vec_2 as parameters to the function.

    • Check if equal(vec.begin(), vec.end(), vec_2.begin()), then return temp. Otherwise, -1 is returned.

  • ##In the function total_count(int number, vector &vec_3)

    • Starts when number is 1 cycle. Inside the loop, set vec_3 to 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;
}
Copy after login

Output

If we run the above code, the following output will be generated

Rearrangement of a number which is also divisible by it is: 300105
Copy after login

The above is the detailed content of In C++, rearrange a number that can also be rearranged by it. For more information, please follow other related articles on the PHP Chinese website!

source:tutorialspoint.com
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template