สมมติว่ามีจำนวนเต็มสามจำนวน a, b และ x งานคือการหาตัวคูณของ x ที่ใกล้ที่สุดกับ a^b ดังนั้นถ้า a = 5, b = 4 และ x = 3 ผลลัพธ์จะเป็น 624 เพราะ 5^4 = 625 และ 624 เป็นตัวคูณของ 3 ที่ใกล้ที่สุดกับ 625
งานนี้ง่าย เราต้องทำตามขั้นตอนเหล่านี้เพื่อแก้ปัญหา:
- คำนวณ num := a^b
- จากนั้นหา f := floor ของ (num/x)
- ตอนนี้องค์ประกอบที่ใกล้ที่สุดทางซ้ายจะเป็น cl = x * f และทางขวาจะเป็น cr = x * (f + 1)
- สุดท้าย ตัวเลขที่ใกล้ที่สุดในสองตัวนี้จะเป็น min(num – cl, cr – num)
ตัวอย่าง
#include <iostream>
#include <cmath>
using namespace std;
long long getClosest(int a, int b, int x) {
long long num = pow(a, b);
int f = floor(num / x);
long long cl = x * f;
long long cr = x * (f + 1);
if ((num - cl) < (cr - num))
return cl;
else
return cr;
}
int main() {
int a = 5, b = 4, x = 3;
cout << "Find closest element: " << getClosest(a, b, x);
}
ผลลัพธ์
Find closest element: 624