nmakarchuk
?>

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

Информатика

Ответы

saltikovaK.S.1482
                                     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. Строится двоичная запись числа
colus77
Uses Crt;
  const n=5; m=7;
  type Mas = array [1..n, 1..m] of integer;
  var i, j, j1, j2: integer;
      Sumj1, Sumj2: real;
      A: Mas;
begin
 ClrScr;
 Randomize;
 SumJ1:=0; SumJ2:=0;
 for i:=1 to n do
    for j:=1 to m do
    A[i,j]:=random (10);
 WriteLn (' Massiv A: ');
 for i:=1 to n do
   begin
      for j:=1 to m do
      Write (A[i,j]:4);
      WriteLn;
   end; WriteLn;
 repeat
   Write (' Stolbez #1 = ');    ReadLn(j1);
 until (j1>=1) and (j1<=m);
 repeat
   Write (' Stolbez #2 = '); ReadLn(j2);
 until (j2>=1) and (j2<=m) and (j1<>j2);
 for i:= 1 to n do
    SumJ1 := SumJ1+A[i,j1];
 for i:= 1 to n do
   SumJ2:=SumJ2+A[i,j2];
 SumJ1:=SumJ1/n; SumJ2:=SumJ2/n; 
WriteLn;
WriteLn (' Srednee stolbza ', j1, ' = ', SumJ1:4:2);
WriteLn (' Srednee stolbza ', j2, ' = ', SumJ2:4:2); 
ReadLn;
end.
Паскаль.составить программу, вычисляющую среднее значение по двум столбцам матрицы. номера столбцов
Исмагилова_Саният
Read (x). Оператор ввода значения переменной с клавиатуры.
Если программа представляет собой последовательность выполнения различных задач, в том числе и Read, то когда очередь дойдет до него программа запросит у вас ввод данных и пока вы не выполните требования, она не продолжит работу.
х - это переменная. Переменные бывают различных типов (не все подходят для read). Два основных типа: Число (integer) и Символ(Char). Если х типа integer, то вам придется ввести целое число (например 2). Но при вводе символа программа выбьет ошибку "Ошибка ввода", так как вы попытались присвоить переменной числа, букву, а это невозможно. 
Рассмотрим пример программы: здесь х типа integer,сначала он намеренно присвоен 5 и выведен на экран, затем вам дается возможность ввести новый х, и он заново выведется. Если вы попытаетесь ввести символ то выбьет ошибку "ошибка ввода", попробуйте.

Var x:integer;
Begin
x:=5;
writeln ('x=',x);
write ('Enter a new X: ');
read (x);
writeln ('x=',x);
end.  

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

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

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

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

Ivan500
smalltalkcoffee5
yanva
gennadevna
Petrushin482
priemni451
magichands68
Timurr007
vladislavk-market2
aluka
ccc712835
bd201188
ВладимировнаИП37
denspiel
osandulyak