เราได้รับหมายเลขประเภทจำนวนเต็ม สมมุติว่า จำนวน ภารกิจคือการจัดเรียงตัวเลขใหม่ในลักษณะที่ตัวเลขที่เกิดขึ้นหลังจากการจัดเรียงใหม่นั้นหารด้วยตัวเลขที่ระบุเช่น 'number'
ให้เราดูสถานการณ์อินพุตเอาต์พุตที่หลากหลายสำหรับสิ่งนี้ -
ป้อนข้อมูล − จำนวนเต็ม =100035
ผลผลิต − การจัดเรียงใหม่ของจำนวนที่หารด้วยมันลงตัวคือ:300105
คำอธิบาย − เราได้รับตัวเลขจำนวนเต็มเป็น 'ตัวเลข' เช่น 100035 ตอนนี้ งานคือการจัดเรียงตัวเลขที่กำหนดเหล่านี้ใหม่ในลักษณะที่จำนวนที่เกิดขึ้นจะหารด้วย 100035 ลงตัว ดังนั้น หลังจากจัดเรียงตัวเลขใหม่ เราได้ 300105 ซึ่งหารด้วยตัวเลข 100035 ลงตัว
ป้อนข้อมูล − จำนวนเต็ม =1000035
ผลผลิต − การจัดเรียงตัวเลขใหม่ที่หารด้วยมันลงตัวคือ:3000105
คำอธิบาย − เราได้รับตัวเลขจำนวนเต็มเป็น 'ตัวเลข' เช่น 1000035 ตอนนี้ ภารกิจคือการจัดเรียงตัวเลขที่กำหนดเหล่านี้ใหม่ในลักษณะที่ตัวเลขที่เกิดขึ้นจะหารด้วย 1000035 ลงตัว ดังนั้นหลังจากจัดเรียงตัวเลขใหม่ เราได้ 3000105 ซึ่งหารลงตัว โดยหมายเลข 1000035
ป้อนข้อมูล − จำนวนเต็ม =28
ผลผลิต − การจัดเรียงตัวเลขใหม่ที่หารด้วยตัวมันลงตัวคือ:-1
คำอธิบาย − เราได้รับตัวเลขจำนวนเต็มเป็น 'ตัวเลข' เช่น 28 ตอนนี้ ภารกิจคือการจัดเรียงตัวเลขที่กำหนดเหล่านี้ใหม่ในลักษณะที่ตัวเลขที่เกิดขึ้นจะหารด้วย 28 ลงตัว ดังนั้นหลังจากจัดเรียงตัวเลขใหม่ เราได้ 82 ซึ่งไม่ใช่ หารด้วยจำนวน 28 ลงตัวจึงได้ผลลัพธ์เป็น -1
แนวทางที่ใช้ในโปรแกรมด้านล่างมีดังนี้
-
ป้อนตัวแปรประเภทจำนวนเต็ม สมมุติว่า number และส่งข้อมูลไปยังฟังก์ชัน Rearrangement(number )
-
ภายในฟังก์ชัน การจัดเรียงใหม่(ตัวเลข)
-
สร้างตัวแปรประเภทเวกเตอร์ซึ่งเก็บตัวแปรประเภทจำนวนเต็ม สมมติว่า vec(10, 0)
-
เรียกใช้ฟังก์ชัน total_count(number, vec) และ pass number และ vec เป็นพารามิเตอร์ของฟังก์ชัน
-
เริ่มลูป FOR จาก i ถึง 2 จนถึง i น้อยกว่า 10 ภายในลูป ตั้งค่า temp เป็นตัวเลข * i.
-
สร้างตัวแปรประเภทเวกเตอร์ซึ่งจัดเก็บตัวแปรประเภทจำนวนเต็ม สมมติว่า vec_2(10, 0)
-
เรียกใช้ฟังก์ชัน total_count(number, vec_2) และ pass number และ vec_2 เป็นพารามิเตอร์ของฟังก์ชัน
-
ตรวจสอบ IF equal(vec.begin(), vec.end(), vec_2.begin()) จากนั้นคืนค่า temp ELSE ส่งคืน -1
-
-
ภายในฟังก์ชัน total_count(int number, vector
&vec_3) -
เริ่มวนซ้ำ ขณะที่ตัวเลขคือ 1 ภายในลูป ตั้งค่า vec_3 เป็น vec_3[number % 10]++ และตัวเลขเป็นตัวเลข / 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 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