Матч 195, Округление (Rounder)

Дивизион 2, Уровень 1

 

Для заданного числа n найти ближайшее целое, которое делится на b. Если таких чисел несколько, то найти наибольшее.

 

Класс: Rounder

Метод: int round(int n, int b)

Ограничения: 1 £ n £ 106, 2 £ b £ 500.

 

Вход. Два числа n и b.

 

Выход. Ближайшее целое к n, которое делится на b. Если n находится строго посредине двух чисел, делящихся на b, то вернуть наибольшее.

 

Пример входа

n

b

5

10

4

10

100

3

49

7

 

Пример выхода

10

0

99

49

 

 

РЕШЕНИЕ

математика

 

Ближайшим к n целым, делящимся на b, будет число . Если n находится строго посредине двух чисел, делящихся на b, это значение будет наибольшим среди них. В языке Си выражение примет вид: (n + b / 2) / b * b.

 

 

ПРОГРАММА

 

#include <stdio.h>

 

class Rounder

{

public:

  int round(int n, int b)

  {

    return ((n + (b / 2)) / b) * b;

  }

};