Матч
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;
}
};