bal4shovser16
?>

Считая, что каждый символ кодируется 16-ю битами, оцените информационный объем следующей пушкинской фразы в кодировке unicode: привычка свыше нам дана: замена счастию она.

Информатика

Ответы

teya07

количество символов мы умножаем на 16 (пробелы и знаки припенания считаются):

44*16 = 704 бита

Серопян
Begin   var c, min, imin: integer;   c : = 0;   var ar : = readarrinteger('массив: ',;   for var i : = 1 to ar.length do   begin     min : = ar[c];     imin : = c;     for var j : = c to ar.length - 1 do     begin       if(ar[j] < min) then       begin         min : = ar[j];         imin : = j;       end;     end;     swap(ar[c], ar[imin]);     c : = c + 1;   end;   write('после сортировки: ');   ar.println;   write('различных чисел: ',ar.distinct.count); end.
Aleksandrovich-Yurevna1421
Из небольших ускорений можно предложить проверять до b[c], дальше всё равно ничего нет. но всё равно алгоритм будет делать порядка n^2 операций, что при n = 10^5 достаточно много. кстати, 2*10^9 еще помещается в longint, int64 не нужен. можно пойти другим путём. отсортируем массив a[i] за n log n, а потом для того, чтобы определить уникальные элементы, достаточно одного прохода по массиву. я буду сортировать сортировкой слиянием, вы можете использовать любую другую достаточно быструю сортировку. procedure merge(var a: array of longint; left1, right1, left2, right2: integer); var   temp: array of longint;   i, j, k: integer;   begin   setlength(temp, right1 - left1 + right2 - left2 + 2);   i : = left1;   j : = left2;   k : = 0;   while (i < = right1) and (j < = right2) do   begin     if a[i] < = a[j] then     begin       temp[k] : = a[i];       inc(i);     end else begin       temp[k] : = a[j];       inc(j);     end;     inc(k);   end;   while i < = right1 do   begin     temp[k] : = a[i];     inc(k);     inc(i);   end;   while j < = right2 do   begin     temp[k] : = a[j];     inc(k);     inc(j);   end;   for i : = left1 to right1 do     a[i] : = temp[i - left1];   for j : = left2 to right2 do     a[j] : = temp[j - left2 + right1 - left1 + 1]; end;   procedure mergesort(var a: array of longint; left, right: integer); var   t: longint;   begin   if right - left = 0 then exit;   if right - left = 1 then   begin     if a[left] > a[right] then     begin       t : = a[left];       a[left] : = a[right];       a[right] : = t;     end;     exit;   end;   mergesort(a, left, (left + right) div 2);   mergesort(a, (left + right) div 2 +   1, right);   merge(a, left, (left + right) div 2, (left + right) div 2 + 1, right); end;   var   a: array of longint;   i, n, count: integer;   begin   read(n);   setlength(a, n);   for i : = 0 to n - 1 do     read(a[i]);   mergesort(a, 0, n - 1);   count : = 1;   for i : = 1 to n - 1 do     if a[i] < > a[i - 1] then       inc(count);   writeln(count); end.

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

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

Считая, что каждый символ кодируется 16-ю битами, оцените информационный объем следующей пушкинской фразы в кодировке unicode: привычка свыше нам дана: замена счастию она.
Ваше имя (никнейм)*
Email*
Комментарий*

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

mantseva
inj-anastasia8
saidsaleh881
Evsevia-a
gabramova
Ruslanovich1217
igor51766771
Николаевна Филиппов1936
tetralek
Абдулганиева Сергей
Владимирович_Слабый
Лилия-Карпухина337
martinzdraste
Максим
Astrians