Петя, вася и маша остались дома одни. кто-то из них ел варенье. на вопрос мамы, кто это сделал, они сказали: а) петя: "я не ел. маша тоже не ела." б) вася: "маша действительно не ела. это сделал петя" в) маша: "вася врет. это он съел." выясните, кто ел варенье, если известно, что двое из них оба раза сказали правду, а третий один раз соврал, а один раз сказал правду.(если можно, то с лог. формулы или таблицы, )
С другой стороны, N-значное число больше 10^(N-2).
Для того, чтобы одно было равно другому, должно выполниться
10^(N - 2) < 10000N, 10^N < N * 10^6.
Так может быть, только если N < 7, поэтому ищем числа среди 1..999999.
Код:
function Sum4Deg(n: integer): integer;
var
s: integer;
begin
s := 0;
repeat
s := s + sqr(sqr(n mod 10));
n := n div 10;
until n = 0;
Sum4Deg := s;
end;
var
i: integer;
begin
for i := 1 to 999999 do
if i = Sum4Deg(i) then
writeln(i);
end.
function Search(n: integer): integer;
var
input: array[1..4] of integer;
even: array[1..4] of integer;
atLestOne: boolean;
begin
input[1] := n div 1000;
input[2] := n mod 1000 div 100;
input[3] := n mod 100 div 10;
input[4] := n mod 10;
if (input[1] mod 2 = 0)
begin
even[1] := input[1];
atLestOne := True;
end;
if (input[2] mod 2 = 0)
begin
even[2] := input[2];
atLestOne := True;
end;
if (input[3] mod 2 = 0)
begin
even[3] := input[3];
atLestOne := True;
end;
if (input[4] mod 2 = 0)
begin
even[4] := input[4];
atLestOne := True;
end;
if atLestOne = True then
Search := Low(even)
else
Search := -1;
end;