Первый способ:
Var n:longint;
Begin
Write('n = ');ReadLn(n);
n:=n*n;
if frac(Ln(n)/Ln(10)) > 0 then WriteLn(int(Ln(n)/Ln(10))+1)
else WriteLn(Ln(n)/Ln(10))
End.
Второй способ:
Var
n,k:longint;
Begin
Write('n = ');ReadLn(n);
k:=0;
n:=n*n;
While n > 0 do
Begin
k:=k+1;
n:=n div 10
End;
WriteLn(k);
End.
Сначала надо перевести все эти числа из восьмеричной системы в двоичную.
Каждая восьмеричная цифра даёт три двоичные.
Переводить можно по таблице, где проставлены восьмеричные числа от нуля до семи и соответствующие им двоичные.
После, надо все полученные двоичные числа записать одно под другим на бумаге в клеточку- чтобы каждая цифра была в отдельной клеточке.
И, закрасить клетки, в которых оказались единицы.
Должен получиться рисунок.
Я всё это сделал в таблице Excel (смотри скрин внизу), саму таблицу тоже там можно скачать.
<span>
</span>
<span>var a, k: integer;
begin
t:=0;
readln(a);
while a<>0 do begin
if (a mod 2 = 0) and (a mod 6 = 0) then
k := k + 1;
readln(a);</span>
<span> </span><span>end;
writeln(k)
end.</span>
Сначала мы заполняем массив, ищем максимальный элемент, а потом уже отдельным циклом делаем условие if (max==arr[i]), и пополняем счётчик на 1.
Написано на 11 стандарте, на счёт других стандартов не уверен.