begin read(x); {x < 4000} l := 1000; i := 4; for i := 4 downto 1 do begin k := x div l mod 10; if k = 9 then write(s[i*2-1],s[i*2+1]) else if k = 4 then write(s[i*2-1],s[i*2]) else begin if k >= 5 then begin write(s[i*2]); k := k - 5 end; for k := k downto 1 do write(s[i*2-1]) end; l := l div 10 end end.
{2}
const eps = 1e-10; stp = 500;
var a: real; l,r,m: real; extreme: real;
function f(x:real):real; begin f := a*x - exp(-x) end;
begin read(a); if a = 0 then writeln('No solutions') else if a > 0 then begin l := 0; r := stp*2; while f(r) <= 0 do begin l := l + stp; r := r + stp end; while r - l > eps do begin m := (l + r)/2; if f(m) > 0 then r := m else l := m end; m := (l + r) / 2; writeln('Solution: ',m:0:5); writeln('e^-x = ',exp(-m):0:5); writeln('ax = ',a*m:0:5) end else begin extreme := ln(-1/a); if f(extreme) < 0 then writeln('No solutions') else if f(extreme) = 0 then writeln('Solution: ',extreme) else begin {writeln('Extreme: ',extreme);} l := extreme; r := 0; while r - l > eps do begin m := (l + r)/2; if f(m) < 0 then r := m else l := m end; m := (l + r) / 2; writeln('Solution 1: ',m:0:5); writeln('e^-x = ',exp(-m):0:5); writeln('ax = ',a*m:0:5); writeln; r := extreme; l := r - stp*2; while f(l) > 0 do begin l := l - stp; r := r - stp end; while r - l > eps do begin m := (l + r)/2; if f(m) > 0 then r := m else l := m end; m := (l + r) / 2; writeln('Solution 2: ',m:0:5); writeln('e^-x = ',exp(-m):0:5); writeln('ax = ',a*m:0:5) end end end.
{3}
var c: array [1..12] of 0..7; x,i,k: integer;
begin read(x); k := x; i := 0; repeat i := i + 1; c[i] := k mod 8; k := k div 8 until k = 0; for i := i downto 1 do write(c[i]) end.
Объяснение:
1) Выполнить кодирование числа 3753D
Для этого переведем его сначала в десятичную вот так :
3753D = 3∙16^4+7∙16^3+5∙16^2+3∙16^1+13∙16^0 = 196608+28672+1280+48+13 = 226621
Получилось: 226621
Переведем 226621 в двоичную систему делением на основание новой:
ответ: 110111010100111101
2) Представьте число 11 0111 0101 0011 в двоично-десятичном.
Для этого переведем его сначала в десятичную вот так :
11011101010011 = 1∙2^13+1∙2^12+0∙2^11+1∙2^10+1∙2^9+1∙2^8+0∙2^7+1∙2^6+0∙2^5+1∙2^4+0∙2^3+0∙2^2+1∙2^1+1∙2^0 = 8192+4096+0+1024+512+256+0+64+0+16+0+0+2+1 = 14163
Получилось: 14163
Переведем 14163 в двоично-десятичную систему делением на основание новой
Получилось: 1416310 = 1100111011
ответ: 1100111011
3) Представьте число 1110 1010 1001 в шестнадцатеричном коде
Для этого переведем его сначала в десятичную вот так :
111010101001 = 1∙2^11+1∙2^10+1∙2^9+0∙2^8+1∙2^7+0∙2^6+1∙2^5+0∙2^4+1∙2^3+0∙2^2+0∙2^1+1∙2^0 = 2048+1024+512+0+128+0+32+0+8+0+0+1 = 3753
Получилось: 3753
Переведем 3753 в шестнадцатиричную систему делением на основание новой
Получилось: 3753 = EA916
ответ: EA916
4) Представьте число 110 1010 1001 в восьмеричном коде
Для этого переведем его сначала в десятичную вот так :
110101010012 = 1∙2^10+1∙2^9+0∙2^8+1∙2^7+0∙2^6+1∙2^5+0∙2^4+1∙2^3+0∙2^2+0∙2^1+1∙2^0 = 1024+512+0+128+0+32+0+8+0+0+1 = 1705
Получилось: 1705
Переведем 1705 в восьмеричную систему делением на основание новой
Получилось: 1705 = 3251
ответ: 3251
5) Представьте число 1110 1010 1001 в десятичном коде
Перевод в десятичную производится вот так :
1110101010012 = 1∙2^11+1∙2^10+1∙2^9+0∙2^8+1∙2^7+0∙2^6+1∙2^5+0∙2^4+1∙2^3+0∙2^2+0∙2^1+1∙2^0 = 2048+1024+512+0+128+0+32+0+8+0+0+1 = 375310
ответ: 375310
6) Представьте число 3753D в дополнительном коде
Для этого переведем его сначала в десятичную вот так :
3753D = 3∙16^4+7∙16^3+5∙16^2+3∙16^1+13∙16^0 = 196608+28672+1280+48+13 = 226621
Получилось: 226621
Переведем 226621 в двоичную систему делением на основание новой:
Получилось: 226621 = 110111010100111101
Дополнительный код положительного числа совпадает с прямым кодом.
ответ: Число 3753D представляется в двоичном дополнительном коде как 0,110111010100111101
7) Представьте число -3753D в дополнительном коде
Для отрицательного числа дополнительный код образуется путем получения обратного кода и добавлением к младшему разряду единицы.
ответ: Число 3753D представляется в двоичном дополнительном коде как 1,001000101011000010
В 8 и 9, речь идет о Коде Хэмминга?
const
s:string = 'IVXLCDM';
var
x,i,l,k:integer;
begin
read(x); {x < 4000}
l := 1000;
i := 4;
for i := 4 downto 1 do
begin
k := x div l mod 10;
if k = 9 then
write(s[i*2-1],s[i*2+1])
else
if k = 4 then
write(s[i*2-1],s[i*2])
else
begin
if k >= 5 then
begin
write(s[i*2]);
k := k - 5
end;
for k := k downto 1 do
write(s[i*2-1])
end;
l := l div 10
end
end.
{2}
const
eps = 1e-10;
stp = 500;
var
a: real;
l,r,m: real;
extreme: real;
function f(x:real):real;
begin
f := a*x - exp(-x)
end;
begin
read(a);
if a = 0 then
writeln('No solutions')
else
if a > 0 then
begin
l := 0;
r := stp*2;
while f(r) <= 0 do
begin
l := l + stp;
r := r + stp
end;
while r - l > eps do
begin
m := (l + r)/2;
if f(m) > 0 then
r := m
else
l := m
end;
m := (l + r) / 2;
writeln('Solution: ',m:0:5);
writeln('e^-x = ',exp(-m):0:5);
writeln('ax = ',a*m:0:5)
end
else
begin
extreme := ln(-1/a);
if f(extreme) < 0 then
writeln('No solutions')
else
if f(extreme) = 0 then
writeln('Solution: ',extreme)
else
begin
{writeln('Extreme: ',extreme);}
l := extreme;
r := 0;
while r - l > eps do
begin
m := (l + r)/2;
if f(m) < 0 then
r := m
else
l := m
end;
m := (l + r) / 2;
writeln('Solution 1: ',m:0:5);
writeln('e^-x = ',exp(-m):0:5);
writeln('ax = ',a*m:0:5);
writeln;
r := extreme;
l := r - stp*2;
while f(l) > 0 do
begin
l := l - stp;
r := r - stp
end;
while r - l > eps do
begin
m := (l + r)/2;
if f(m) > 0 then
r := m
else
l := m
end;
m := (l + r) / 2;
writeln('Solution 2: ',m:0:5);
writeln('e^-x = ',exp(-m):0:5);
writeln('ax = ',a*m:0:5)
end
end
end.
{3}
var
c: array [1..12] of 0..7;
x,i,k: integer;
begin
read(x);
k := x;
i := 0;
repeat
i := i + 1;
c[i] := k mod 8;
k := k div 8
until k = 0;
for i := i downto 1 do
write(c[i])
end.