Приблизительно вот так) Ну правда это не самая новая схема, в последних Windows чуть по другому.
shoko91
16.08.2021
// PascalABC.NET 3.2, сборка 1353 от 27.11.2016 // Внимание! Если программа не работает, обновите версию!
function MaxSubstr(s1,s2:string):string; begin var a:=new integer[s1.Length+1,s2.Length+1]; var u:=0; var v:=0; for var i:=0 to s1.Length-1 do for var j:=0 to s2.Length-1 do if s1[i+1]=s2[j+1] then begin a[i+1,j+1]:=a[i,j]+1; if a[i+1,j+1]>a[u,v] then begin u:=i+1; v:=j+1 end end; Result:=s1.Substring(u-a[u,v],a[u,v]) end;
begin var s:='trapperkaperkatrter'; var t:='appekaperspamer'; Writeln(MaxSubstr(s,t)) end.
zakup-r51
16.08.2021
Для начала посчитаем сколько символов в твоем предложении (пробелы, знаки препинания, буквы). Их там 28 [Терпение и труд все перетрут]. Как мы знаем, в кодировке Unicode - 1 символ занимает 16 бит памяти. Умножим 28 символов на 16 и получим 448 бит [28*16=448 бит]. Теперь, если это требуется, переведем биты в байты и килобайты. 1 байт памяти занимает 8 бит. Делим 448 бит на 8 получаем 56 [448/8=56 байт]. 1 кбайт памяти, в свою очередь, занимает 1024 байт памяти. Делим 56 байт на 1024 (советую использовать калькулятор) получаем 0,05 кбайт [56/1024=0,0546875]. В ответе пишем одно из получившихся значений, которое требуется написать [448 бит или 56 байт или 0,05 кбайт]
Ну правда это не самая новая схема, в последних Windows чуть по другому.