Var i,j,k:longint; begin for i:=1 to 1000 do for j:=1 to 1000 do for k:=1 to 10000 do if sqr(i)+sqr(j)=sqr(K)then begin writeln(i,' ',j,' ',k); {вывожу все тройки, можно убрать} if i+j+k=1000 then begin writeln('! ',i,' ',j,' ',k); {нужная тройка} exit; {прерывание программы} end; end; end.
Во-первых, X1 < 8, иначе число 2N в 16-ной записи станет 4-значным. Можно написать такую программу поиска этих чисел Начало k = 0 ' Это счетчик чисел, которые мы ищем Цикл по X1 от 1 до 7 Цикл по Y1 от 0 до 15 Цикл по Z1 от 0 до 15 N = X1*256 + Y1*16 + Z1 M = 2*N X2 = Int (M / 256) Y2 = Int ((M - X2*256) / 16) Z2 = M Mod 16 Если (X1+Y1+Z1 = X2+Y2+Z2) And ((X1 = 2) Or (Y1 = 2) Or (Z1 = 2), То k = k + 1 Конец Если Конец цикла по Z1 Конец цикла по Y1 Конец цикла по X1 Вывод k Конец
i,j,k:longint;
begin
for i:=1 to 1000 do
for j:=1 to 1000 do
for k:=1 to 10000 do
if sqr(i)+sqr(j)=sqr(K)then
begin
writeln(i,' ',j,' ',k); {вывожу все тройки, можно убрать}
if i+j+k=1000 then
begin
writeln('! ',i,' ',j,' ',k); {нужная тройка}
exit; {прерывание программы}
end;
end;
end.