Procedure convert ( x: integer );
var s: string;
k, error, len: integer;
element: array[1..20] of real;
i, rez: real;
const N = -2;
begin
s := IntToStr(x);
len := length(s);
if len = 0 then writeln('Ошибка!')
else
begin i := 0;
rez := 0;
for k := 1 to len do val(s[k], element[k], error);
for k := 1 to len do
begin
i := element[k] * power( N, len - k );
rez := rez + i;
end;
writeln(rez);
end;
end;
var numeric: integer;
begin
write('Введите двоичное число для перевода в систему счисления с основанием (-2): ');
readln(numeric);
write('Ответ: ');
convert(numeric);
<span>end.</span>
Рассмотрим случай, когда запись числа 86 в системе счисления с основанием x состоит из 3 цифр.
В этом случае x должно быть таким, что x^2 <= 86 < x^3
Если x=3, то 3^2 <= 86 < 3^3 ⇒ 9 <= 86 < 27 - не выполняется
Если x=4, то 4^2 <= 86 < 4^3 ⇒ 16 <= 86 < 64 - не выполняется
Если x=5, то 5^2 <= 86 < 5^3 ⇒ 25 <= 86 < 125 - выполняется
86(10) = 321(5) - не подходит
Если x=6, то 6^2 <= 86 < 6^3 ⇒ 36 <= 86 < 216 - выполняется
86(10) = 222(6) - подходит (2*6^2+2*6+2 = 72+12+2 = 86)
Ответ: 6
Пример в Excel 2003
Ярлычки листов соответствуют № задания