ภาพรวม
ได้รับจำนวนเต็ม number งานคือจัดเรียงหลักของตัวเลขใหม่ เพื่อให้ตัวเลขที่ได้จากการจัดเรียง หารตัวเลขเดิม number ลงตัว
ตัวอย่าง
อินพุต − int number = 100035
เอาต์พุต − Rearrangement of a number which is also divisible by it is: 300105
คำอธิบาย − ตัวเลข 100035 จัดเรียงหลักใหม่ได้ 300105 ซึ่งหาร 100035 ลงตัว
อินพุต − int number = 1000035
เอาต์พุต − Rearrangement of a number which is also divisible by it is: 3000105
คำอธิบาย − 1000035 จัดเรียงได้ 3000105 หาร 1000035 ลงตัว
อินพุต − int number = 28
เอาต์พุต − Rearrangement of a number which is also divisible by it is: -1
คำอธิบาย − 28 จัดเรียงได้ 82 ไม่หาร 28 ลงตัว คืน -1
แนวทางการแก้ปัญหา
- รับ
numberส่งให้Rearrangement(number) - ภายในฟังก์ชัน:
- สร้าง
vectorนับความถี่หลักของ numbervec(10, 0) - เรียก
total_count(number, vec)นับหลัก - วน i=2 ถึง 9 คำนวณ
temp = number * i - สร้าง
vec_2(10, 0)เรียกtotal_count(temp, vec_2) - หาก
equal(vec.begin(), vec.end(), vec_2.begin())คืนtemp - มิฉะนั้นคืน -1
- สร้าง
- ฟังก์ชัน
total_count(int number, vector:&vec_3) - while
number > 0:vec_3[number%10]++; number /= 10;
- while
ตัวอย่างโค้ด C++
#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;
}
ผลลัพธ์
Rearrangement of a number which is also divisible by it is: 300105