Матч 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. Ответом будет значение (maxmin) / 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;

  }

};