สมมติว่าเรามีค่าสามค่า a, b และ x เราต้องหาพหุคูณของ x หนึ่งตัวที่ใกล้ที่สุดกับ a^b สมมติตัวเลขคือ x = 4, a = 3, b = 3 ผลลัพธ์จะเป็น 28 เนื่องจากนี่คือค่าที่ใกล้ที่สุดกับ 3^3 = 27
แนวทางคือง่าย เราต้องทำตามเงื่อนไขเหล่านี้:
- ถ้า b < 0 และ a = 1 แล้ว a^b จะกลายเป็น 1 และดังนั้น พหุคูณของ x ที่ใกล้ที่สุดจะกลายเป็น 0 หรือ x
- ถ้า b < 0 และ a > 1 แล้ว a^b จะกลายเป็นน้อยกว่า 1 และดังนั้น พหุคูณของ x ที่ใกล้ที่สุดจะกลายเป็น 0
- ถ้า b > 0 แล้วหา a^b ให้ mul = จำนวนเต็มของ a^b / x แล้วพหุคูณของ x ที่ใกล้ที่สุดคือ mul*x หรือ (mul + 1)*x
ตัวอย่างโค้ด C++
#include <iostream>
#include <cmath>
using namespace std;
void findMultiple(int a, int b, int x) {
cout << "Nearest multiple: ";
if (b < 0) {
if (a == 1 && x == 1)
cout << "1";
else
cout << "0";
}
int mul = pow(a, b);
int ans = mul / x;
int ans1 = x * ans;
int ans2 = x * (ans + 1);
if((mul - ans1) <= (ans2 - mul)){
cout << ans1;
}
else{
cout << ans2;
}
}
int main() {
int a = 3, b = 3, x = 4;
findMultiple(a, b, x);
}
ผลลัพธ์
Nearest multiple: 28