mmoskow3
?>

Автомат обрабатывает натуральное число N по следующему алгоритму: 1. Строится двоичная запись числа N. 2. Складываются все цифры полученной двоичной записи. В конец записи (справа) дописывается остаток от деления полученной суммы на 2. 3. Предыдущий пункт повторяется для записи с добавленной цифрой. 4. Результат переводится в десятичную систему и выводится на экран. Сколько различных чисел, принадлежащих отрезку [90; 160], могут появиться на экране в результате работы автомата?​

Информатика

Ответы

Сергеевич1396
                                     PascalABC.NET                                       function ToBinary (x:integer):string; beginif (x>0) then ToBinary := ToBinary(x div 2) + (x mod 2).ToString;end; function FromBinary (x:string):integer; beginif (x.Length>0) then FromBinary := FromBinary(x.Substring(1)) + x[1].ToDigit*Round(Power(2,x.Length-1));end; function func (x:integer):integer; beginvar s := ToBinary(x); loop 2 do s += s.AsEnumerable.Sum(c->c.ToDigit) mod 2; func:=FromBinary(s);end; begin Println('f(N):',func(ReadInteger('N:'))); Println('Количество:',(1..160).Count(x->func(x) in 90..160)); end.

Примечание:

Если к числу в двоичной системе счисления приписывать в конец цифры, то число увеличивается и никак не может уменьшится. Поэтому, n<f(n). Следовательно, перебор различных чисел, принадлежащих отрезку [90;160], можно смело ставить до 160 (можно и меньше, но лень расписывать вычисления).

ToBinary - функция перевода числа из десятичной СС в двоичную. Можно писать любой алгоритм, необязательно в точности использовать мой.

FromBinary - функция перевода числа из двоичной СС в десятичную. Можно писать любой алгоритм, необязательно в точности использовать мой.

func - функция, которая выполняет преобразования числа согласно условию (пункты 1, 2, 3, 4).

Код кажется большим только из-за процедур и begin/endов. Без них - всего то 7 строчек :). В скринах можно проверить, действительно ли 19 (40-22+1).

Пример работы:


Автомат обрабатывает натуральное число N по следующему алгоритму: 1. Строится двоичная запись числа
Автомат обрабатывает натуральное число N по следующему алгоритму: 1. Строится двоичная запись числа
Автомат обрабатывает натуральное число N по следующему алгоритму: 1. Строится двоичная запись числа
Olga1509
Цикл с предусловием это такой цикл, в котором условие проверяется перед выполнением тела цикла.
А цикл с постусловием - на оборот, он сначала выполнит, а потом проверит условие и если условие true, то цикл завершится.

Цикл с постусловием, можно использовать в таких ситуациях, когда надо что-то сделать и если чего-то не хватает, то сделать еще раз. Напрмер отправить письмо на email, а если не отправилось, то повторить еще 3 раза. Сначала выполнится тело цикла, в котором находятся функции отправки письма и если отправка удачная, то сообщаем until() true. Иначе тело выполнится еще и еще и еще кучу раз, если мы не задали счетчик в теле цикла, как вариант...

Цикл с предусловием можно использовать, если надо проверять какое-то значение ПЕРЕД выполнением тела цикла и тебе не важно, должно ли оно хоть раз выполниться. Например запросить пароль у пользователя. Но если пользователь уже ввёл пароль, то зачем его запрашивать? Тут можно было бы использовать while
rosik76

Для определения информационного объема сообщения воспользуемся формулой: I = K * i,  где K - количество символов, i - вес одного символа.

1)  1024 стра­ни­цы, на одной стра­ни­це по­ме­ща­ет­ся 64 стро­ки, а в стро­ке по­ме­ща­ет­ся 64 сим­во­ла. Каж­дый сим­вол в ко­ди­ров­ке КОИ-8 за­ни­ма­ет 8 бит па­мя­ти.

i = 8 бит

K = 1024 * 64 * 64 = 4194304 символов,

I = 4194304 * 8 = 33554432 бит = 4194304 байт = 4096  Кбайт = 4 Мбайт

2) 512 стра­ниц, на одной стра­ни­це в сред­нем по­ме­ща­ет­ся 64 стро­ки, а в стро­ке 64 сим­во­ла. (Каж­дый сим­вол в ко­ди­ров­ке Unicode за­ни­ма­ет 16 бит па­мя­ти.)

i = 16 бит

K = 512 * 64 * 64 = 2097152 символов,

I = 2097152 * 16 = 33554432 бит = 4194304 байт = 4096 Кбайт = 4 Мбайт

*8 бит = 1 байт

1024 байт = 1 Кбайт

1024 Кбайт = 1 Мбайт

Ответить на вопрос

Поделитесь своими знаниями, ответьте на вопрос:

Автомат обрабатывает натуральное число N по следующему алгоритму: 1. Строится двоичная запись числа N. 2. Складываются все цифры полученной двоичной записи. В конец записи (справа) дописывается остаток от деления полученной суммы на 2. 3. Предыдущий пункт повторяется для записи с добавленной цифрой. 4. Результат переводится в десятичную систему и выводится на экран. Сколько различных чисел, принадлежащих отрезку [90; 160], могут появиться на экране в результате работы автомата?​
Ваше имя (никнейм)*
Email*
Комментарий*

Популярные вопросы в разделе

armentamada1906
ГегамБукреев830
tochkamail7
kosbart28
Sergeevich-Drugov1513
Семеновна-Павел
Татьяна
ЮрьевичКарпова1564
av52nazarov
eobmankina
Levinalx4938
gaydukov5706
hello
spz03
Tatianarogozina1306