Вкафе продается мороженое по 3 или по 5 шариков в порции. определить, можно ли купить k шариков мороженного. входные данные: во входном потоке в первой строке задано натуральное число к (k < = 1000) выходные данные: вывести yes или no. пример входного файла (input.txt): 2

123291Duck 123291Duck    2   09.06.2019 14:40    6

Ответы
Frisk011 Frisk011  08.07.2020 10:58
   x: - входное число, целое
   а: - целое
шаг 1.
   x - делится на 5 ?
   если да то ответ YES, выход
шаг 2.
   а: = x-5*целое (х/5)
шаг 3
   a - делится на 3 ?
   если да то ответ YES, выход
шаг 4
   a:=a+5
шаг 5
   a - больше чем х ?
   если да то  ответ NО, выход
переход на шаг 3
ПОКАЗАТЬ ОТВЕТЫ
zajigalka2001 zajigalka2001  08.07.2020 10:58
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.
ПОКАЗАТЬ ОТВЕТЫ
Другие вопросы по теме Информатика