คุณจะได้รับสามตัวเลข คุณต้องหาผลคูณที่ n จากผลคูณของตัวเลขสองตัวแรก มาดูตัวอย่างให้เข้าใจกันชัดๆ
ป้อนข้อมูล
x = 2 y = 3 n = 7
ผลผลิต
10
n ตัวแรก ****การคูณของ 2 คือ 2 4 6 8 10 12 14
n ตัวแรก **** การคูณ 3 **** คือ 3 6 9 12 15 18 21
หากรวมทั้งสองผลคูณและเรียงลำดับเราจะได้ 2 3 4 6 8 9 10 12 14 15 18 21 และหมายเลขที่ n จากรายการคือ 10
อัลกอริทึม
- เริ่มต้นเวกเตอร์เพื่อเก็บทวีคูณทั้งหมด
- ค้นหา n **** ทวีคูณของ x ตัวแรกแล้วบวกเข้ากับเวกเตอร์ด้านบน
- ตอนนี้ หาตัวคูณ n ตัวแรกของ y
- เพิ่มลงในเวกเตอร์หากยังไม่มีอยู่ในเวกเตอร์
- เรียงลำดับการคูณ
- พิมพ์ผลคูณที่ n จากเวกเตอร์
การนำไปใช้
ต่อไปนี้เป็นการนำอัลกอริธึมข้างต้นไปใช้ใน C++
#include<bits/stdc++.h> using namespace std; int findNthMultiple(int x, int y, int n) { vector<int> multiples; for (int i = 1; i <= n; i++) { multiples.push_back(x * i); } sort(multiples.begin(), multiples.end()); for (int i = 1, k = n; i <= n && k; i++) { if (!binary_search(multiples.begin(), multiples.end(), y * i)) { multiples.push_back(y * i); sort(multiples.begin(), multiples.end()); } } return multiples[n - 1]; } int main() { int x = 2, y = 3, n = 7; cout << findNthMultiple(x, y, n) << endl; return 0; }
ผลลัพธ์
หากคุณเรียกใช้โค้ดด้านบน คุณจะได้ผลลัพธ์ดังต่อไปนี้
10