ในบทช่วยสอนนี้ เราจะเขียนโปรแกรมเพื่อหาจำนวน N หลักที่มากที่สุดซึ่งหารด้วยตัวเลข 3 จำนวนที่กำหนดลงตัว
ขั้นตอนการแก้ปัญหา
- กำหนดค่าเริ่มต้นของตัวเลข 3 ตัวพร้อมกับค่า n
- หาค่า LCM (ตัวคูณร่วมน้อยที่สุด) ของตัวเลข 3 ตัว
- เก็บค่าจำนวน N หลักที่มากที่สุด
- ถ้าจำนวนมากที่สุดหารด้วย LCM ลงตัว ให้คืนค่า
- มิฉะนั้น ให้ลบเศษจากขั้นตอนก่อนหน้าเพื่อหาคำตอบ
ตัวอย่างโค้ด
#include <bits/stdc++.h>
using namespace std;
int LCM(int x, int y, int z) {
int ans = ((x * y) / (__gcd(x, y)));
return ((z * ans) / (__gcd(ans, z)));
}
int findNumber(int n, int x, int y, int z) {
int lcm = LCM(x, y, z);
int largestNDigitNumber = pow(10, n) - 1;
int remainder = largestNDigitNumber % lcm;
if (remainder == 0) {
return largestNDigitNumber;
}
largestNDigitNumber -= remainder;
if (largestNDigitNumber >= pow(10, n - 1)) {
return largestNDigitNumber;
}
return 0;
}
int main() {
int n = 4, x = 6, y = 7, z = 8;
int result = findNumber(n, x, y, z);
if (result != 0) {
cout << result << endl;
} else {
cout << "Not possible" << endl;
}
return 0;
}
ผลลัพธ์
หากรันโค้ดด้านบน จะได้ผลลัพธ์ดังนี้:
9912
สรุป
หากมีข้อสงสัยเกี่ยวกับบทช่วยสอนนี้ สามารถถามได้ในส่วนความคิดเห็น