Вася придумал робота-шифратора, и сейчас пишет для него программы. шифратор работает со строками. до сегодняшнего дня робот умел выполнять только команду cut(x), она означает, что нужно взять поданную на вход роботу строку, разрезать ее пополам после символа с номером x, символы второй части записать в обратном порядке, затем две части переставить местами и склеить обратно в целую строку (символы строки нумеруются слева направо начиная с 1). например, если робот работает со строкой алгоритм и выполняет команду cut(4), то результатом его работы будет строка мтиралго. если после этого робот выполнит команду cut(1), то получится строка огларитм. сегодня вася написал новую команду mcut. например, mcut(4, 1, 3) означает, что робот сначала выполняет команду cut(4), затем для получившейся строки команду cut(1), затем для получившейся строки команду cut(3). на вход роботу подали строку абвгдежз, после чего он выполнил команду mcut(3, 7, 6, 5, 1) 2019 раз подряд (после первого выполнения команды mcut вторая выполняется для полученной строки и так далее). какая строка в итоге получилась?
Пусть количество пикселей в рисунке K, тогда объем памяти, занимаемой одним рисунком = (K*3)/1024 + 128 Кбайт.
X = 8*(K*3/1024 + 128)+2.5*1024
2. При использовании палитры из 2^16 цветов для хранения цвета 1 пикселя используется 16 бита = 2 байта.
Объем памяти, занимаемой одним рисунком = (K*2)/1024 + 128 Кбайт.
X = 20*(K*2/1024 + 128)
8*(K*3/1024 + 128)+2.5*1024 = 20*(K*2/1024 + 128)
К = 65536 (количество пикселей в рисунке)
X = 20*(K*2/1024 + 128) = 20*(65536*2/1024 + 128) Кбайт =
20*(128 + 128) Кбайт = 5120 Кбайт = 5120/1024 Мбайт = 5 Мбайт
// Внимание! Если программа не работает, обновите версию!
begin
var m:=ArrRandom(ReadInteger('n='),-20,20); m.Println;
(var k,var s):=(0,0);
for var i:=1 to m.Length-2 do
if (m[i]<m[i-1]) and (m[i]<m[i+1]) then (k,s):=(k+1,s+m[i]);
Writeln('Свойство А: кол-во=',k,', сумма=',s);
var mb:=m.Where(x->x<0).ToArray;
Write('Свойство Б: '); mb.Println;
var z:=ReadInteger('Z1=');
var mmin:=m.Min;
m.Transform(x->x=mmin?z:x); Writeln('Свойство B:'); m.Println;
m.Sort; Writeln('Упорядоченность по неубыванию:'); m.Println;
var p,q:integer; Write('Введите P Q: '); Read(p,q);
m:=m.Where(x->(x mod p<>0) and (x mod q<>0)).ToArray;
Writeln('Свойство Г:'); m.Println;
z:=ReadInteger('Z2=');
p:=m.FindIndex(x->x>=z);
if m[p]<>z then m:=(m[:p]+Arr(z)+m[p:]).ToArray;
Writeln('После попытки вставки:'); m.Println
end.
Пример
n= 17
3 5 -5 12 -15 6 11 -7 -13 -3 -17 8 -7 8 -5 -15 -7
Свойство А: кол-во=6, сумма=-72
Свойство Б: -5 -15 -7 -13 -3 -17 -7 -5 -15 -7
Z1= -33
Свойство B:
3 5 -5 12 -15 6 11 -7 -13 -3 -33 8 -7 8 -5 -15 -7
Упорядоченность по неубыванию:
-33 -15 -15 -13 -7 -7 -7 -5 -5 -3 3 5 6 8 8 11 12
Введите P Q: 3 7
Свойство Г:
-13 -5 -5 5 8 8 11
Z2= 0
После попытки вставки:
-13 -5 -5 0 5 8 8 11