ในปัญหานี้ เราได้รับจำนวนเต็ม x และ y สองจำนวน งานของเราคือการสร้างฟังก์ชันที่จะเทียบเท่ากับ pow(x,y) โดยใช้วิธีการวนซ้ำซึ่งจะทำให้งานเสร็จสิ้นในเวลาที่ซับซ้อนเป็น 0(Log y)
มาดูตัวอย่างเพื่อทำความเข้าใจปัญหากัน
อินพุต
x = 7 , y = 3
ผลลัพธ์
343
ฟังก์ชันวนซ้ำสำหรับ pow(x,y) จะวนซ้ำและอัปเดตผลลัพธ์สำหรับค่าคี่ของ y คูณด้วย x และอัปเดต x เป็น x2 ทุกครั้งที่วนซ้ำ
โปรแกรมแสดงการดำเนินการแก้ไข
ตัวอย่าง
#include <iostream> using namespace std; void calcPower(int x, unsigned int y) { int result = 1; while (y > 0) { if (y & 1) result *= x; y = y >> 1; x = x * x; } cout<<result; } int main() { int x = 7; unsigned int y = 3; cout<<x<<" raised to "<<y<<" is "; calcPower(x,y); return 0; }
ผลลัพธ์
raised to 3 is 343