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

ค้นหาจำนวนที่ใกล้เคียงที่สุดกับ n และหารด้วย m ลงตัวที่สุดใน C++


สมมติว่าเรามีจำนวนเต็มสองตัว n และ m เราต้องหาจำนวนที่ใกล้เคียงที่สุดกับ n แล้วหารด้วย m หากมีตัวเลขดังกล่าวมากกว่าหนึ่งจำนวน ให้แสดงตัวเลขที่มีค่าสัมบูรณ์สูงสุด ถ้า n หารด้วย m ลงตัวแล้ว ให้คืนค่า n ดังนั้นถ้า n =13, m =4 ผลลัพธ์จะเป็น 12

เพื่อแก้ปัญหานี้ เราสามารถทำตามขั้นตอนนี้ -

  • ให้ q :=n/m และ n1 :=m*q
  • ถ้า n * m> 0 แล้ว n2 :=m * (q + 1) มิฉะนั้น n2 :=m * (q - 1)
  • ถ้า |n – n1| <| n – n2| แล้วคืนค่า n1 มิฉะนั้น n2

ตัวอย่าง

#include<iostream>
#include<cmath>
using namespace std;
int findClosest(int n, int m) {
   int q = n / m;
   int n1 = m * q;
   int n2 = (n * m) > 0 ? (m * (q + 1)) : (m * (q - 1));
   if (abs(n - n1) < abs(n - n2))
      return n1;
   return n2;
}
int main() {
   int n = 13, m = 4;
   cout << "Closest for n = " << n << ", and m = " << m << ": " << findClosest(n, m) << endl;
      n = 0; m = 8;
   cout << "Closest for n = " << n << ", and m = " << m << ": " << findClosest(n, m) << endl;
      n = 18; m = -7;
   cout << "Closest for n = " << n << ", and m = " << m << ": " << findClosest(n, m) << endl;
}

ผลลัพธ์

Closest for n = 13, and m = 4: 12
Closest for n = 0, and m = 8: 0
Closest for n = 18, and m = -7: 21