โจทย์
ได้รับ จำนวนตรรกยะ (Rational Numbers) สองจำนวนในรูป p/q ทางเราต้อง หาค่าสูงสุดของจำนวนตรรกยะทั้งสอง
ตัวอย่าง
Input: rat1 = 5/4, rat2 = 3/2
Output: 3/2
อธิบาย: 5/4 = 1.25, 3/2 = 1.5
แนวทางแก้ปัญหา
ใช้วิธีหา ค่าต่ำสุดที่หารด้วยตัวส่วนทั้งสองได้ (L.C.M.):
- หา L.C.M. ของตัวส่วน
- ปรับตัวเศษให้มีตัวส่วนร่วมกัน
- เปรียบเทียบตัวเศษ ตัวที่ใหญ่กว่าคือจำนวนตรรกยะที่มากกว่า
โปรแกรมตัวอย่าง
#include <bits/stdc++.h>
using namespace std;
int findLCM(int a, int b) {
return (a * b) / (__gcd(a, b));
}
void maxRational(int ratOneNum, int ratOneDen, int ratTwoNum, int ratTwoDen) {
int k = findLCM(ratOneDen, ratTwoDen);
int oneNum = ratOneNum * k / ratOneDen;
int twoNum = ratTwoNum * k / ratTwoDen;
if (oneNum > twoNum)
cout << ratOneNum << "/" << ratOneDen;
else
cout << ratTwoNum << "/" << ratTwoDen;
}
int main() {
int ratOneNum = 5, ratOneDen = 4;
int ratTwoNum = 3, ratTwoDen = 2;
cout << "The maximum of the two rational Numbers is ";
maxRational(ratOneNum, ratOneDen, ratTwoNum, ratTwoDen);
return 0;
}
ผลลัพธ์
The maximum of the two rational Numbers is 3/2