В кафе продается мороженое по 3 или по 5 шариков в порции. Определить, можно ли купить K шариков мороженного. Входные данные: Во входном потоке в первой строке задано натуральное число К (K меньше = 1000) Выходные данные: Выве...

В кафе продается мороженое по 3 или по 5 шариков в порции. Определить, можно ли купить K шариков мороженного. Входные данные: Во входном потоке в первой строке задано натуральное число К (K <= 1000) Выходные данные: Вывести YES или NO. Пример входного файла (input.txt): 2
Гость
Ответ(ы) на вопрос:
Гость
   x: - входное число, целое    а: - целое шаг 1.    x - делится на 5 ?    если да то ответ YES, выход шаг 2.    а: = x-5*целое (х/5) шаг 3    a - делится на 3 ?    если да то ответ YES, выход шаг 4    a:=a+5 шаг 5    a - больше чем х ?    если да то  ответ NО, выход переход на шаг 3
Гость
1. Решение для сомневающихся и привыкших писать программы безмозгло "в лоб" var   k, p, q: integer;   flag: boolean;   f:Text begin   Assign(f,'input.txt');   Reset(f);   read(f,k);   Close(f);   case k of     1, 2, 4, 7: writeln('NO');     3, 5: writeln('YES');   else     q := k mod 5;     if (q = 0) or (k = 3) then writeln('YES')     else     begin       q := (k div 5);       flag := false;       while (not flag) and (q > 0) do       begin         p := k - 5 * q;         if p mod 3 = 0 then         begin           writeln('YES');           flag := true         end;         q := q - 1       end;       if (not flag) then writeln('NO')     end   end end. 2. Решение в соответствии с алгоритмом, приведенным в комментарии к вопросу. const   Kno = [1, 2, 4, 7]; var   k: integer;   f:Text begin   Assign(f,'input.txt');   Reset(f);   read(f,k);   Close(f);   if k in Kno then writeln('NO')   else writeln('YES') end.
Не нашли ответ?
Ответить на вопрос
Похожие вопросы