Computer >> Máy Tính >  >> Lập trình >> C ++

Tìm số gần nhất với n và chia hết cho m trong C ++

Giả sử chúng ta có hai số nguyên n và m. Chúng ta phải tìm số gần nhất với n và chia cho m. Nếu có nhiều hơn một số như vậy, thì hiển thị số có giá trị tuyệt đối lớn nhất. Nếu n chia hết cho m thì trả về n. Vì vậy, nếu n =13, m =4, thì sản lượng là 12.

Để giải quyết vấn đề này, chúng ta có thể làm theo các bước sau -

  • cho q:=n / m và n1:=m * q
  • nếu n * m> 0 thì n2:=m * (q + 1), ngược lại n2:=m * (q - 1)
  • nếu | n - n1 | <| n - n2 |, thì trả về n1, ngược lại là n2

Ví dụ

#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;
}

Đầu ra

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