在 C++ 中也可以被它整除的数字的重新排列

我们得到了一个整数类型的数字,比方说,数字。任务是以这样的方式重新排列数字数字,即重新排列后形成的数字也可以被给定的数字(即“数字”)整除。

让我们看看这个的各种输入输出场景 -

输入 - 整数编号 = 100035

输出 - 也可以被它整除的数字的重新排列是:300105

解释 - 我们得到一个整数作为“数字”,即 100035。现在,任务是重新排列这些给定的数字,使形成的数字可以被 100035 整除。因此,在重新排列数字后,我们得到 300105,即可以被数字 100035 整除。

输入 - 整数数 = 1000035

输出 - 也可以被它整除的数字的重新排列是:3000105

解释- 我们得到一个整数作为“数字”,即 1000035。现在,任务是重新排列这些给定的数字,使形成的数字可以被 1000035 整除。因此,重新排列数字后,我们得到 3000105,即可以被数字 1000035 整除。

输入 - 整数数 = 28

输出 - 也可以被它整除的数字的重新排列是:-1

解释- 我们得到一个整数作为“数字”,即 28。现在,任务是重新排列这些给定的数字,使形成的数字可以被 28 整除。因此在重新排列数字后,我们得到了 82,它不是“ t 可被数字 28 整除,因此输出为 -1。

下面程序中使用的方法如下

  • 输入一个整数类型的变量,比如 number 并将数据传递给函数Rearrangement(number )。

  • 函数内部 Rearrangement(number)

    • 创建一个 vector 类型的变量,它存储整数类型的变量,比如 vec(10, 0)。

    • 调用该函数total_count(number, vec)并将 number 和 vec 作为参数传递给该函数。

    • 从 i 到 2 开始循环 FOR,直到 i 小于 10。在循环内,将 temp 设置为 number * i。

    • 创建一个存储整数类型变量的向量类型的变量,比方说,vec_2(10, 0)。

    • 调用函数 total_count(number, vec_2) 并将 number 和 vec_2 作为参数传递给函数。

    • 检查 IF equal( , , vec_ ) 然后返回 temp。否则,返回-1。vec.begin()vec.end()2.begin()

  • 在函数内 total_count(int number, vector<int> &vec_3)

    • 开始循环 WHILE number 为 1。 在循环内,将 vec_3 设置为 vec_3[number % 10]++ 并将 number 设置为 number / 10。

示例

#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(number);

   return 0;

}

输出结果

如果我们运行上面的代码,它将生成以下输出

也可以被它整除的数的重排是: 300105

以上是 在 C++ 中也可以被它整除的数字的重新排列 的全部内容, 来源链接: utcz.com/z/347473.html

回到顶部