โจทย์
เราสามารถหาตัวคูณโดยใช้ตัวดำเนินการ % ได้โดยไม่มีอุปสรรค แต่โจทย์ระบุว่าเราไม่สามารถใช้ % ได้
ที่นี่เราใช้ตัวดำเนินการ + แทน เราสามารถหาตัวคูณได้โดยการบวก 3 หรือ 5 เข้ากับตัวคูณก่อนหน้า มาดูตัวอย่างกัน
อินพุต
15
เอาต์พุต
1 2 3 - Multiple of 3 4 5 - Multiple of 5 6 - Multiple of 3 7 8 9 - Multiple 3 10 - Multiple of 5 11 12 - Multiple of 3 13 14 15 - Multiple of both 3 and 5
อัลกอริธึม
- กำหนดตัวเลข n
- กำหนดตัวเลขสองตัวเพื่อติดตามตัวคูณถัดไปของ 3 และ 5
- เริ่มต้นตัวเลขทั้งสองจะเป็น 3 และ 5
- เขียนลูปที่วนรอบจาก 1 ถึง n ทั้งสองรวม
- ตรวจสอบว่าตัวเลขปัจจุบันเป็นตัวคูณของ 3 หรือไม่โดยใช้ตัวแปรติดตาม
- ตรวจสอบเช่นกันสำหรับตัวคูณของ 5
- ถ้าเป็นตัวคูณของ 3 หรือ 5 ให้บวกตัวเลขที่เกี่ยวข้องเพื่อให้ได้ตัวคูณถัดไป
- พิมพ์ข้อความที่เกี่ยวข้องไปยังคอนโซล
การนำไปใช้งาน
ต่อไปนี้เป็นการนำไปใช้งานของอัลกอริธึมข้างต้นใน C++
#include <bits/stdc++.h>
using namespace std;
void findMultiplesOf3And5(int n) {
int threeMultiple = 3;
int fiveMultiple = 5;
for (int i = 1; i <= n; i++) {
bool _3 = false, _5 = false;
if (i == threeMultiple) {
threeMultiple += 3;
_3 = true;
}
if (i == fiveMultiple) {
fiveMultiple += 5;
_5 = true;
}
if (_3 && _5) {
cout << "Multiple of both 3 and 5" << endl;
}else if (_3) {
cout << "Multiple of 3" << endl;
}else if (_5) {
cout << "Multiple of 5" << endl;
}else {
cout << i << endl;
}
}
}
int main() {
findMultiplesOf3And5(100);
return 0;
}
ผลลัพธ์
หากคุณรันโค้ดข้างต้น คุณจะได้ผลลัพธ์ดังนี้
1 2 Multiple of 3 4 Multiple of 5 Multiple of 3 7 8 Multiple of 3 Multiple of 5 11 Multiple of 3 13 14 Multiple of both 3 and 5 16 17 Multiple of 3 19 Multiple of 5 Multiple of 3 22 23 Multiple of 3 Multiple of 5 26 Multiple of 3 28 29 Multiple of both 3 and 5 31 32 Multiple of 3 34 Multiple of 5 Multiple of 3 37 38 Multiple of 3 Multiple of 5 41 Multiple of 3 43 44 Multiple of both 3 and 5 46 47 Multiple of 3 49 Multiple of 5 Multiple of 3 52 53 Multiple of 3 Multiple of 5 56 Multiple of 3 58 59 Multiple of both 3 and 5 61 62 Multiple of 3 64 Multiple of 5 Multiple of 3 67 68 Multiple of 3 Multiple of 5 71 Multiple of 3 73 74 Multiple of both 3 and 5 76 77 Multiple of 3 79 Multiple of 5 Multiple of 3 82 83 Multiple of 3 Multiple of 5 86 Multiple of 3 88 89 Multiple of both 3 and 5 91 92 Multiple of 3 94 Multiple of 5 Multiple of 3 97 98 Multiple of 3 Multiple of 5