Чтобы перевести из восьмеричной в десятичную надо число(у нас 11) представить в виде суммы произведений степеней основания, а конкретнее
Складываем:
Теперь из десятичной переводим в двоичную:
Вначале 20/2=10(остаток 0), 10/2=5(остаток 0), 5/2=2(остаток 1),2/2=1(остаток 1)
И чтобы получить двоичную запись просто пишем остатки в обратом порядке:
<em>// PascalABC.NET 3.2, сборка 1509 от 27.07.2017</em>
<em>// Внимание! Если программа не работает, обновите версию!</em>
function SumDig(n:integer):integer;
begin
Result:=0;
while n>0 do begin
Result+=n mod 10;
n:=n div 10
end
end;
begin
var a:=ReadSeqInteger('Вводите числа:',ReadInteger('n=')).ToArray;
Write('Палинодромы: ');
a.Select(x->x.ToString).Where(x->x=x.Inverse).Println;
var k:=ReadInteger('Введите простое число');
Write('Числа, сумма цифр которых больше введенного: ');
a.Where(x->SumDig(x)>k).Println
end.
<u>Пример</u>
n= 12
Вводите числа: 9437 2522 3534 1532 4664 6882 7629 5820 2530 9889 6526 6573
Палинодромы: 4664 9889
Введите простое число 19
Числа, сумма цифр которых больше введенного: 9437 4664 6882 7629 9889 6573
Ответ: 5
Пояснение:
<span>Существует 16 двоичных слов длины 4
Т.к. среди них есть слова, содержащие 1 или 3 единицы, то в нашем коде нужно использовать кодовые слова с длиной больше, чем 4
Слов длины 5 достаточно
Искомые кодовые слова можно получать, например, добавляя к каждому из 16 возможных двоичных слов справа "бит четности", равный 0, если 4-значное двоичное слово содержит четное количество единиц, и равный 1 в противном случае
Например, двоичное слово 0000 преобразуется в 00000, а двоичное слово 1011 – в 10111</span>
uses crt;
var
i:integer;
begin
clrscr;
for i:=1 to 25 do writeln ('информатика');
readkey;
end.
Я думаю что: 4,5,7,8,12
Ну я так понял)