Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

ค้นหาผลคูณของ x ที่ใกล้เคียงที่สุดกับ a^b ใน C++


สมมติว่าเรามีจำนวนเต็มสามจำนวน a, b และ x ภารกิจคือการหาผลคูณของ x ซึ่งใกล้เคียงกับ ab มากที่สุด ดังนั้นหาก a =5, b =4 และ x =3 ผลลัพธ์จะเป็น 624 เนื่องจาก 54 =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