在 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作为参数传递给函数。
检查IFequal(,,vec_)然后返回temp。否则,返回-1。vec.begin()vec.end()2.begin()
在函数内total_count(intnumber,vector<int>&vec_3)
开始循环WHILEnumber为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