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.
Приведём все степени к основанию 2
2^3702-2^468+2^1620-108
-108 можно представить как -128 + 16 + 4
2^3702-2^468+2^1620-2^7 + 2^4 + 2^2
Теперь выстраиваем степени в порядке убывания:
2^3702+2^1620-2^468-2^7 + 2^4 + 2^2
В выражении два вычитания подряд, избавимся от этого, заменив -2^468 на -2^469 + 2^468
2^3702+2^1620 -2^469+2^468-2^7 + 2^4 + 2^2
2^3702 - 1 единица
2^4 - 1 единица
2^2 - 1 единица
Количество единиц в вычитаниях будет равно разнице степеней. Например 1000000-100=1111
2^1620 -2^469 - количеств единиц 1620-469 = 1151
2^468-2^7 - количество единиц 468-7 = 461
Общее количество единиц равно 3+1151+461 = 1615
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.