Program ToDec;
Uses crt;
var s:string;
n,l,i:integer;
function Pow(x,y:integer):integer;
begin
if y>0 then Pow:=Pow(x,y-1)*x
else Pow:=1;
end;
function ToDec(A : string) : integer;
var L : Byte;
begin
if A = '' then ToDec := 0
else begin
L := length(A);
case A[1] of
'0' : ToDec := ToDec(Copy(A, 2, L - 1));
'1' : ToDec := Pow(2, L - 1) + ToDec(Copy(A, 2, L - 1));
end;
end;
end;
begin
clrscr;
write('Введите двоичное число: ');
readln(s);
writeln('Это число в десятичной системе : ', ToDec(S));
readkey;
end.
56
Объяснение:
X mod 3 - последняя цифра в троичной записи числа X. X div 3 - число, полученное отбрасыванием последней цифры в троичной системе счисления.
Используя написанное выше, легко понять, что делает программа.
Сначала M = L = 0, затем в цикле, пока X > 0, к M прибавляется 1, к L прибавляется 1, если последняя цифра в троичной записи числа равна 2. Потом последняя троичная цифра отбрасывается. В конце выводится M и L.
Программа выводит количество троичных цифр в записи числа X и количество двоек в троичной записи числа X.
Итак, нужно найти количество чисел, троичная запись которых состоит из 5 цифр, из которых ровно две двойки.
Если первая цифра не двойка, то она 1 (0 быть не может): 1. Для двоек можно выбрать место на каждое из мест, обозначенных вопросом, можно поставить любую из 2 цифр (0 или 1). Получается 6 * 2 * 2 = 24 числа.
Если первая цифра двойка, то место для второй двойки можно выбрать каждый вопрос можно заполнить одной из двух цифр, итого 4 * 2 * 2 * 2 = 32 числа.
Всего 24 + 32 = 56 вариантов.