最接近的可整除整数

2022-09-02 19:44:48

例。

int a = 254;
int b = 25;

int c = (closest integer to `a` that is divisible by `b`)

如何找到整数?该示例的结果是 。cc = 250


答案 1

有两种情况需要考虑:

  1. 小于或等于 的最接近的整数:a

    int c1 = a - (a % b);
    
  2. 大于 的最接近的整数:a

    int c2 = (a + b) - (a % b);
    

然后,我们需要检查哪个更接近并返回:a

int c;
if (a - c1 > c2 - a) {
    c = c2;
} else {
    c = c1;
}

因此,我们可以创建一个这样的方法:closestInteger()

static int closestInteger(int a, int b) {
    int c1 = a - (a % b);
    int c2 = (a + b) - (a % b);
    if (a - c1 > c2 - a) {
        return c2;
    } else {
        return c1;
    }
}

例:

System.out.println(closestInteger(254, 25));
System.out.println(closestInteger(9, 5));

输出:

250
10

答案 2

您必须在 的两侧进行检查。因此,我们将 'c1' 设置为 低于(或等于)的最接近的整数,并成为其上方最接近的整数。然后比较差异。如果 更接近 ,则设置为 ,否则 。aac2c1acc1c2

int c1 = a - (a % b);
int c2 = c1 + b;
int c = a - c1 < c2 - a ? c1 : c2;