Матч
201, Множители (Multiples)
Дивизион 2, Уровень
1
Определить, сколько чисел в интервале
от min до max (включительно) нацело делится на factor.
Класс: Multiples
Метод: int
number(int min, int max, int factor)
Ограничения:
-106 £ min,max
£ 106, min £ max, 1 £ factor
£ 1000.
Вход. Три целых числа min, max, factor.
Выход. Строка содержит список предметов, которые следует сдать студенту
для получения диплома об образовании. Количество предметов в строке должно быть
минимально возможным. Если существует несколько наборов предметов одинаковой
длины, то вывести лексикографически наименьший. Если студент не сможет
удовлетворить все требования, то вывести 0.
Пример входа
min |
max |
factor |
0 |
14 |
5 |
7 |
24 |
3 |
-75312 |
407891 |
14 |
Пример выхода
3
6
34515
РЕШЕНИЕ
математика
В цикле будем увеличивать min до тех пор, пока оно не станет
нацело делиться на factor. Уменьшаем
также max до тех пор, пока оно не
поделится нацело на factor. Ответом
будет значение (max – min) / factor + 1.
ПРОГРАММА
#include <stdio.h>
class Multiples
{
public:
int number(int min, int max, int factor)
{
while (min % factor != 0) min++;
while (max % factor != 0) max--;
if (min > max) return 0;
return (max - min) / factor + 1;
}
};