воскресенье, 25 сентября 2016 г.

Задача с "Пример М+"

Условие:
for (i = 1; i <= n; i++)
  for (j = i; j <= m; j++)
тело цикло выполняется m + ( m - 1) + ( m - 2 ) + ... + (  m - (n - 1) ) раз
Выведите формулу для этой суммы.
[Если m=n то это просто 1+2+...+n (ранее мы выводили это "диагоналями")]
Возможный исходный код(Object Pascal):

program MPlus;

{$APPTYPE CONSOLE}

{$R *.res}

uses
  System.SysUtils;

var
  Count: Integer = 0;
  m, n: Integer;
  i, j: Integer;

begin
  writeln('Enter m, n:');
  readln(m, n);

  for i := 1 to m do
    for j := i to n do
      Inc(Count);

  writeln('Count = ', Count);
end.


Возможны 3 варианта: 
  • m=n

     
  • m<n
  • m>n
При m=n, Count = (n * (n + 1)) / 2
При m<n, Count = (m * (m + 1)) / 2
При m>n, Count = (n * (n + 1)) / 2 + (m - n) * n

Упростим:
При m<=n, Count = (m * (m + 1)) / 2
При m>n, Count = (n * (n + 1)) / 2 + (m - n) * n

Итоговая формула:


В виде исходного кода:
function MPlus(n, m: Integer): Integer;
begin
  if n >= m then
    Result := (m * (m + 1)) div 2
  else
    Result := (n * (n + 1)) div 2 + (m - n) * n;
end;

Задача с модемом

Условие:
Модем, передающий информацию со скоростью 128000 бит/с, передал файл с несжатой стереофонической музыкой за 5 минуты и 30 секунд. Укажите продолжительность (в секундах) записанной в этот файл композиции, если известно, что она была оцифрована с частотой дискретизации 22000 Гц и 256 уровнями квантования. В ответе укажите целое число.
Решение:
256 уровней => 8bit
Всего преданно: 128000 * ((5 * 60) + 30)
=>
Продолжительность:
Length = (128000 * ((5 * 60) + 30)) / (22000 * 8 * 2) = 120

Ответ: 
120

среда, 21 сентября 2016 г.

Формальная грамматика


1) "в лоб"
[ C -> CC | (C) | {C} | e ]

2) "последовательный"
T := C -> CC | (C) | {C} | e
RESULT := [T]

суббота, 10 сентября 2016 г.

Задание 3. Кнопка










Задание 1. Юникод

ༀ།།
གནས་ཚུལ་།

Перевод: информация/положение вещей/способ бытия