โจทย์
เราสามารถใช้ตัวดำเนินการ เลขซ้าย (<<) เพื่อคูณด้วย 15 หากเราเลขซ้าย 1 เรากำลังคูณมันด้วย 2
หากเราเลขซ้ายตัวเลขที่กำหนดด้วย 4 เราจะได้ 16 * n การลบตัวเลขที่กำหนดออกจาก 16 * n จะได้ 15 * n
หรือ
เราสามารถแยกได้เป็น 8 * n + 4 * n + 2 * n + n คุณสามารถคูณกำลังของ 2 ได้ง่ายๆ โดยใช้เลขซ้าย
อัลกอริธึม
- กำหนดตัวเลข n
- หา n << 4 เพื่อได้ 16 * n
- ลบ n ออกจากผลลัพธ์ข้างต้น
- คืนคำตอบสุดท้าย
การนำไปใช้งาน
ต่อไปนี้เป็นการนำไปใช้งานของอัลกอริธึมข้างต้นใน C++
#include <bits/stdc++.h>
using namespace std;
long long getMultiplicationResult(long long n) {
return (n << 4) - n;
}
int main() {
long long n = 15;
cout << getMultiplicationResult(n) << endl;
return 0;
}
ผลลัพธ์
หากคุณรันโค้ดข้างต้น คุณจะได้ผลลัพธ์ดังนี้
225