Люблянова_Р.1777
?>

Алгоритм вычисления значения функции f(n), где n - натуральное число, задан следующими соотношениями: f(1) = 1 f(n) = f(n-1)*(3*n - 2), при n > 1чему равно значение функции f(4)?

Информатика

Ответы

Galina_Yurevna
В данном случае надо просто посчитать F(2)=F(1)*(3*2-2)=4 F(3)=F(2)*7=28 F(4)=F(3)*(3*4-2)=28*10=280
BorgovichOA
Рассматривая различные прямоугольники и подсчитывая в них число поворотов P, можно прийти к следующему алгоритму. Для любого натурального k получаем:
P=\begin {cases} 0, \ min(M,N)=1 \\4k-2, \ min(M,N)=2k, \, M=N, \, k \in \mathbb N \\ 4k-1, \ min(M,N)=2k, \, M \neq N, \, k \in \mathbb N \\ 4k, \ min(M,N)=2k+1, \, M=N, \, k \in \mathbb N \\ 4k+1, \ min(M,N)=2k+1, \, M \neq N, \, k \in \mathbb N \\ \end {cases}

var
  M, N, k, mn, P: integer;
  f: Text;

begin
  Assign(f, 'input.txt');
  Reset(f);
  Readln(f, M, N);
  Close(f);
  if M < N then mn := M else mn := N;
  if mn = 1 then P := 0
  else begin
    k := mn div 2;
    if mn mod 2 = 0 then
      if M = N then P := 4 * k - 2
      else P := 4 * k - 1
    else
    if M = N then P := 4 * k
    else P := 4 * k + 1
  end;
  Assign(f, 'output.txt');
  Rewrite(f);
  Writeln(f, P);
  Close(f)
end.
hachatryanlilit1983
1. Переводим отдельно целую часть, отдельно - дробную. Целую часть переводим путем последовательного целочисленного деления с остатком на основание системы, в которую осуществляется перевод. Нам надо сделать перевод в системы счисления по основаниям 2, 8, 9 и 16, поэтому сначала выбираем 16 - это даст меньше всего операций деления.
125/16=7, остаток 13.
7 меньше 16, деление прекращаем. Записываем частное, а за ним остатки в обратном порядке (это общее правило, а в нашем случае остаток единственный). Получаем 7 13. Заменяем полученные десятичные числа шестнадцатиричными и получаем 7D.
Теперь переводим дробную часть. Тут надо производить последовательное умножение на основание системы и отбрасывать целые части, записывая их в качестве получаемых цифр числа. Повторяем до получения нулевой дробной части или прекращаем, если получено необходимое число цифр.
0.68х16=10.88, записываем 10, в 16й системе счисления это А
0.88х16=14.08, 14 ⇒ E
0.08x16=1.28, 1 ⇒ 1
0.28x16=4.48, 4 ⇒ 4
0.48x16=7.68, 7 ⇒ 7
0.68x16=10.88, 10 ⇒ E и все пошло по кругу.
Следовательно, дробная часть не может быть точно представлена в шестнадцатиричной системе счисления. Ограничимся двумя цифрами после запятой.
Результат перевода запишется так: 125.68(10)=7D.AE(16)

Переход к двоичной системе очень прост, поскольку шестнадцать - это два в четвертой степени. Поэтому каждую шестнадцатиричную цифру заменяем четырьмя двоичными цифрами (так называемой тетрАдой).
Получаем 7D.AE(16)=0111 1101.1010 1110(2)

Перевод из двоичной системы в восьмеричную тоже прост, поскольку восемь - это два в кубе. Разбиваем двоичное число на триАды (по три разряда) влево и вправо от десятичной точки и каждую триаду заменяем восьмеричной цифрой (они по написанию совпадают с десятичными). Если разрядов для триады не хватает, дополняем их нулями слева для целой части и справа для дробной.
001 111 101.101 011 100(2)=175.534(8)

Перейти от двоичной к девятиричной системе счисления мы подобный образом сделать не можем, поскольку девять не является степенью двойки. Придется поступать как при переходе к шестнадцатиричной системе: делить десятичное число на основание системы (9).
Снова отдельно переводим целую часть, отдельно - дробную.
125/9=13, остаток 8.
13/9=1, остаток 4
1 меньше 9, деление прекращаем. Записываем частное, а за ним остатки в обратном порядке: 148.
Теперь переводим дробную часть. Тут надо производить последовательное умножение на основание системы и отбрасывать целые части, записывая их в качестве получаемых цифр числа. Повторяем до получения нулевой дробной части или прекращаем, если получено необходимое число цифр.
0.68х9=6.12, записываем 6
0.12х9=1.08, записываем 1
0.08x9=0.72, записываем 0
0.72x9=6.48, записываем 6
0.48x9=4.32, записываем 4
0.32x9=2.88, записываем 2 и так далее...
В нашем случае дробная часть не может быть точно представлена в девятиричной системе счисления, ограничимся четырьмя цифрами после запятой.
Результат перевода запишется так: 125.68(10)=148.6106(9)

2. Перевод из двоичного представления в восьмеричное мы уже делали, поэтому объяснения тут не нужны. Разбиваем число на триады и получаем результат.
111 011.001 101(2) = 73.15(8)
В шестнадцатиричную систему перевод делается так же, только двоичное число надо разбивать не на триады, а на тетрады. С дополнением нулями, как и для восьмеричной системы.
0011 1011.0011 0100(2) = 3В.34(16)
Осталось сделать перевод в десятичную систему счисления. Конечно, его можно выполнять для любого основания, но лучше брать такое, где меньше всего ненулевых цифр. В двоичном представлении 8 единиц, в восьмеричном и шестнадцатиричном - по 4. Следовательно можно брать или восьмеричное число, или шестнадцатиричное. Допустим, выбрано шестнадцатиричное число. Записываем его в расширенной форме по степеням основания (т.е. 16 в нашем случае):
3B.34_{16}=3\times 16^1+11\times 16^0+3\times 16^{-1}+4\times 16^{-2}= \\ 3\times 16+11+\frac{3}{16}+\frac{4}{16^2}=48+11+ \frac{3}{16}+ \frac{4}{256}=59+\frac{3}{16}+\frac{1}{64}= \\ 59+\frac{3\times 4+1}{64}=59 \frac{13}{64}=59.203125_{10}

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

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

Алгоритм вычисления значения функции f(n), где n - натуральное число, задан следующими соотношениями: f(1) = 1 f(n) = f(n-1)*(3*n - 2), при n > 1чему равно значение функции f(4)?
Ваше имя (никнейм)*
Email*
Комментарий*