Пронумеруем мнения. 1.1. Валерий будет третьим. 1.2. Василий будет первым. 2.1. Сергей будет вторым. 2.2. Валерий будет третьим. 3.1. Андрей будет первым. 3.2. Сергей будет третьим.
Допустим, 1.1 истинно, тогда 1.2 ложно. Если 1.1 истинно, то истинно и 2.2, тогда 2.1 ложно. Если 1.1. истинно, то 3.2. ложно, тогда 3.1. истинно. Получаем распределение мест: Валерий третий (1.1.), Андрей первый (3.1.), Сергей не второй, следовательно, второй Василий (методом исключения). Противоречий нет.
Проверим альтернативный вариант. Допустим, 1.1. ложно, тогда 1.2. истинно. Если 1.1. ложно, то и 2.2. ложно, тогда 2.1. истинно. Если 2.1. истинно, то 3.2 ложно, тогда 3.1 истинно. Но истинные 1.2. и 3.1. противоречат друг-другу, следовательно наше допущение неверно и 1.1. ложным быть не может.
Окончательно: Андрей первый, Василий второй, Валерий третий, Сергей четвертый (во всяком случае, не вошел в первую тройку).
А) Program cifr; Uses crt; var n,l:integer; s:string; Begin read(n); str(n,s); l:=length(s); if (s[1]<>s[2]) and (s[2]<>s[3]) and (s[1]<>s[3]) then begin writeln('Одинаковых цифр нет') end else writeln('Одинаковые цифры присутствуют'); end.
Б) Program Stroke; Uses Crt; Var s: string; n,i,j,l: integer; Begin ReadLn(n); str(n,s); l:=length(s); j:=0; for i := 1 to l div 2 do begin if s[i]=s[length(s)-i+1] then j:=1 end; if j=1 then writeln('Да, число является палиндромом') else writeln('Нет, число не является палиндромом'); End.
i:integer;
begin
for i:=1 to 8 do
if i mod 2 <>0 then
writeln('Число ',i,' Квадрат ',i*i,' Куб ',i*i*i);
end.