Программное решение задач ЕГЭ по информатике

Задача 5921. Источник: Поляков. Задание КИМ 15

Страница задачи 5921

(М. Ишимов) Обозначим через ДЕЛ(n, m) утверждение «натуральное число n делится без остатка на натуральное число m». Обозначим через СУММБОЛ(s, d) утверждение «сумма целых чисел s и d больше 0». Для какого наименьшего натурального числа А формула

(x + A ≥ 160) ∨ (ДЕЛ(x, 7) → ¬СУММБОЛ(x, –17))

тождественно истинна (т.е. принимает значение 1) при любом натуральном значении переменной х?

Решение

Левая часть выражения будет гарантировать истину при значении А или x от 159. Поэтому имеет смысл перебирать значения только до данного.

Python

for a in range(1, 160):
    f = True
    for x in range(1, 160):
        if not (x + a >= 160 or ((x % 7 == 0) <= (not x - 17 > 0))):
            f = False
            break
    if f:
        print(a)
        break

PascalABC

var
    a, x: Integer;
    f: Boolean;
begin
    for a := 1 to 159 do
    begin
        f := True;
        for x := 1 to 159 do
            if not ((x + a >= 160) or ((x mod 7 = 0) <= not (x - 17 > 0))) then
            begin
                f := False;
                break;
            end;
        if f then
        begin
            Writeln(a);
            break;
        end;
    end;
end.

C++

#include <iostream>
using namespace std;
int main()
{
    for (int a = 1; a < 160; a++)
    {
        bool f = true;
        for (int x = 1; x < 160; x++)
            if (!(x + a >= 160 || ((x % 7 == 0) <= (!(x - 17 > 0)))))
            {
                f = false;
                break;
            }
        if (f)
        {
            cout << a << endl;
            break;
        }
    }
}

Ответ

139

Отправить замечание по решению

Код по которому имеется замечание:

Ваш вариант кода:

Комментарий: