e-olymp 916. Интересное произведение

Условие

Определить все возможные значения произведения [latex]i\cdot j[/latex], если целочисленные значения переменных [latex]i[/latex] и [latex]j[/latex] меняются соответственно  [latex]i[/latex]  от [latex]a[/latex] до [latex]b[/latex] и [latex]j[/latex] от [latex]c[/latex] до [latex]d[/latex] ([latex]1\leq a,b,c,d\leq 10[/latex]).

Входные данные

В одной строке заданы 4 числа [latex]a,b,c,d[/latex] ( [latex]a[/latex] может быть больше [latex]b[/latex],  [latex]c[/latex] может быть больше [latex]d[/latex] ).

Выходные данные

Вывести количество возможных вариантов произведения.

Код

 

Тестирование

Входные данные Выходные данные
1 1 10 1 10 42
2 7 2 4 1  18
3 2 7 1 4 18
4 3 9 2 4 16

Решение

Для нахождения всех возможных результатов произведения без повторений [latex]i\cdot j[/latex] будем проверять каждое число [latex] p [/latex] (которое находится в диапазоне от  произведения минимальных значений [latex] i [/latex] и [latex] j [/latex] до произведения их максимальных значений) на то, возможно ли его получить при помощи данного произведения. Если получить число хотя бы один раз, перемножив [latex] i [/latex] и [latex] j [/latex], реально,тогда значению [latex] flag [/latex] присваиваем 1. Если [latex] flag [/latex] присваивается 1, тогда  [latex] rez [/latex] увеличивается на 1. В результате выводим итоговое [latex] rez [/latex].

Ссылки

 

10 thoughts on “e-olymp 916. Интересное произведение

    • Кажется,наконец удалось полностью соблюсти определенный стиль отступов.Удалось ли устранить проблему с отступами в этой работе?

      • Нет, не удалось.
        Очень простые правила. Видимо по моей ссылке было не очень понятно объяснено.
        — если последующий оператор будет выполняться после окончания работы предыдущего, то их пишут один под другим.
        — если последующий оператор входит в предыдущий, то последующий пишется с отступом относительно предыдущего.
        Такая ситуация возникает в случаях когда в состав оператора входят другие операторы. Это характерно для условных операторов, циклов и некоторых других синтаксических конструкций.

        В Вашем случае внутри одного оператора цикла выполняется другой оператор цикла:

        Значит нужен сдвиг. Даже если Вы решили не ставить фигурных скобок для образования составного оператора.

  1. — Признаться, я просто поменял бы местами значения переменных [latex]a[/latex] и [latex]b[/latex] если бы оказалось, что [latex]a[/latex] больше. Но Вы сделали гораздо лучше — завели отдельные переменные для начала и конца диапазона. Так понятнее читателю кода. Очень хорошо, молодец.
    — Вы нарушили основное правило выбора имени переменной — использовали транслитерацию русских слов. Представьте себе, что авторы известных учебников по программированию использовали бы для именования транслитерацию слов своего родного языка. А ведь среди них есть поляки, румыны, индийцы по происхождению. Уверен, вы найдёте английские слова чтобы заменить konec и nachalo.
    — Цикл по j является излишним. Если Вам известно произведение p и один из сомножителей i, то найти второй сомножитель j можно делением. Останется только проверить лежит ли он в требуемом диапазоне значений.

    • Изменила язык имен переменных на английский, избавилась от цикла по j, найдя сомножитель j делением. И поработала над отступами.

  2. Молодец.
    Поработайте ещё немного над отступами. Делайте отступы при помощи клавиши табуляции. И выберите какой-нибудь один стиль расстановки отступов и придерживайтесь его. Я в первом же комментарии дал ссылку на то какие бывают стили.

  3. Игорь Евгеньевич, по-видимому, во время копирования кода из ideone.com произошла ошибка и из-за этого появились синтаксические ошибки. Скопировала код заново.