Предмет: Информатика, автор: Лада555

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

Ответы

Автор ответа: LRSM
8

                                     PascalABC.NET                                      

Ответ:

  • function ToBinary (x:integer):string;
  • begin
  • if (x>0) then ToBinary := ToBinary(x div 2) + (x mod 2).ToString;
  • end;
  • function FromBinary (x:string):integer;
  • begin
  • if (x.Length>0) then FromBinary := FromBinary(x.Substring(1)) + x[1].ToDigit*Round(Power(2,x.Length-1));
  • end;
  • function func (x:integer):integer;
  • begin
  • var 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).

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

Приложения:
Похожие вопросы
Предмет: Русский язык, автор: Ziga123
 Однажды, возвращаясь домой, я нечаянно забрёл в какую-то незнакомую усадьбу. Солнце уже пряталось, и на цветущей ржи растянулись вечерние тени. Два ряда старых, тесно посаженных елей стояли, образуя красивую аллею. Я перелез через изгородь и пошёл по ней, скользя по еловым иглам. Было тихо и темно, и только на вершинах кое-где дрожал яркий золотой свет и переливался радугой в сетях паука. Я повернул на длинную липовую аллею. Здесь тоже запустение и старость. Прошлогодняя листва шелестела под ногами. Направо, в старом фруктовом саду, нехотя,  слабым голосом пела иволга, должно быть, тоже старая. Но вот липы кончились. Я прошёл мимо дома с террасой, и передо мной неожиданно открылся чудесный вид: широкий пруд с купальней, деревня на том берегу, высокая узкая колокольня. На ней горел крест, отражая заходившее солнце. На миг на меня повеяло очарованием чего-то родного, очень знакомого.
Задания;
1) найти односоставные предложения( разобрать их)
 2) над глаголом надписать чем выражен т.е Определённо-личные и т.д