Вот тебе в паскале
program ryad_chisel;
var N, t:integer;
begin
read(N);
t:=(N*(N+1))div 2;
if t mod 2 =1 then writeln('IMPOSSIBLE')
else begin
if N mod 2 =0 then begin
t:=N div 4;
repeat
write('+');
t:=t-1;
until t=0;
t:=N div 2;
repeat
write('-');
t:=t-1;
until t=0;
t:=N div 4;
repeat
write('+');
t:=t-1;
until t=0;
end
else begin
t:=((N+1) div 4)-1;
repeat
write('+');
t:=t-1;
until t=0;
t:=((N-1) div 2)+1;
repeat
write('-');
t:=t-1;
until t=0;
t:=(N+1) div 4;
repeat
write('+');
t:=t-1;
until t=0;
end
end
end.
1. Жигули, с единицы номер.
2. Москвич, с семерки номер.
3. Иномарка, не с единицы.
Каждый сказал один факт правду и один - ложь.
Предположим, что первый верно указал цифру 1. Значит, он обманул относительно жигулей. Раз номер с единицы начинается, то другие двое обманули относительно номера, а значит, верно указали марку машины. Но они не могли оба верно указать марку, ведь один сказал - "Москвич", а второй - "иномарка". Значит первое предположение, что номер начинается с единицы - привело нас в тупик. Раз номер не с единички, то первый обманул про номер, значит правду сказал про марку - это "Жигули".
Раз марка жигули, то второй обманул про Москвич, а значит верно сказал про номер с семерки. Третий значит, обманул про иномарку, но верно сказал, что номер не с единицы начинается.
Итого - это были "Жигули" и номер начинается с семерки.