Некоторый алгоритм из одной цепочки символов получает новую цепочку следующим образом. сначала вычисляется длина исходной цепочки символов; если она четна, то в начало цепочки символов добавляется цифра 1, а если нечетна, то средний символ цепочки удаляется. в полученной цепочке символов каждая
цифра заменяется следующей за ней цифрой (1- на 2, 2-на 3,и т.д а 9 на 0) получившаяся таким образом цепочка является результатом работы алгоритма. дана цепочка символов огэ19. какая цепочка символов получится если к данной цепочке применить описанный алгоритм трижды ( т.е применить алгоритм к
данной цепочке, а затем к результату вновь применить алгоритм)?
var n:integer;
begin
read(n);
if (n=1) or (n=2) then writeln('1') else
if n<=999 then
if n mod 3 = 0 then writeln('2')
else writeln('1')
else if (n-1000) mod 3=0 then writeln('1')
else writeln('2')
end.
var n:integer;
begin
read(n);
if (n=1) or (n=2) then write('1') else
if n<=999 then
if n mod 3 = 0 then writeln('2')
else writeln('1')
else if (n-1000) mod 3=0 then write('1')
else writeln('2')
end.
Так как язык не указан, приведу пример на SWI-Prolog.
Код:
read_int(Int) :- read(Int), integer(Int).split_int_by_numbers(0, []) :- !.split_int_by_numbers(N, [Number|Ints]) :- Number is mod(N, 10), RestN is div(N, 10), split_int_by_numbers(RestN, Ints).test_to_div(_, []).test_to_div(N, [Number|Ints]) :- mod(N, Number) =:= 0, test_to_div(N, Ints). test(Int) :- split_int_by_numbers(Int, Numbers), test_to_div(Int, Numbers), write(Int), write(" - Yes!"), nl.test(Int) :- write(Int), write(" - No!"), nl.?- read_int(Int), test(Int).