ในบทช่วยสอนนี้ เราจะเขียนโปรแกรมที่หาจำนวนตัวเลข n ที่ใหญ่ที่สุดที่หารด้วยตัวเลขสามตัวที่ให้มาลงตัว
มาดูขั้นตอนการแก้ปัญหากัน
- เริ่มต้นตัวเลขสามตัวพร้อมกับ n.
- ค้นหา LCM ของตัวเลขสามตัว
- เก็บตัวเลขที่ใหญ่ที่สุดด้วยตัวเลข n
- ถ้าจำนวนที่มากที่สุดหารด้วย n ลงตัว ก็คืนค่ามา
- ตรวจสอบตัวเลขที่ได้จากการลบส่วนที่เหลือในขั้นตอนข้างต้น
ตัวอย่าง
มาดูโค้ดกันเลย
#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
บทสรุป
หากคุณมีข้อสงสัยใดๆ ในบทแนะนำ โปรดระบุในส่วนความคิดเห็น