在C ++中找到最接近n且可被m整除的数字

假设我们有两个整数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

以上是 在C ++中找到最接近n且可被m整除的数字 的全部内容, 来源链接: utcz.com/z/322150.html

回到顶部