Aleksei
?>

Вэлектронной библиотеке хранится 10000000 книг. для их удобного поиска решили ввести следующую систему обозначений - каждой книге присваивается идентификатор, состоящий из двух частей: 1. последовательность цифр длиной 3 (допустимы все 10 десятичных цифр 2. некоторая последовательность букв определенной длины, одинаковой для всех книг (допустимы 26 букв латинского алфавита). какой длины должна быть последовательность букв, чтобы уникально идентифицировать все книги в библиотеке?

Информатика

Ответы

Agadzhanyan-Ekaterina
Тремя цифрами можно закодировать 10*10*10 разных элементов.
10*10*10*26^n элементов можно закодировать, если использовать дополнительно n букв. Чтобы все 10000000 элементов влезли, надо чтобы выполнялось следующее неравенство:
10*10*10*26^n >= 10000000
26^n >= 10000
Недолгим перебор получаем, что n = 3.
Alekseevich1012
Var s,st: string;
    a: array[1..255] of integer;
    i: integer;    
begin
  write('строка: ');  readln(s);
  for i:=1 to 255 do a[i]:=0;
  for i:=1 to length(s) do inc(a[ord(s[i])]);
  st:='';
  for i:=1 to length(s) do
    if ((a[ord(s[i])]>=2) and
       (s[i] in ['а'..'я']))  then continue
    else st:=st+s[i];
  writeln('новая строка: ',st);
end.

строка: Это строка для проверки.
новая строка: Э са для пвеи.

Если нужно, чтобы не различались прописные и строчные буквы, то другой вариант программы:

var s: string;
    a: array[1..255] of integer;
    i,j: integer;    
begin
  write('строка: ');  readln(s);
  for i:=1 to 255 do a[i]:=0;
  for i:=1 to length(s) do
  if ord(s[i])>32 then
  begin
    inc(a[ord(s[i])]);
    if s[i] in ['а'..'я'] then inc(a[ord(UpperCase(s[i]))])
    else if s[i] in ['А'..'Я'] then inc(a[ord(LowerCase(s[i]))]);
  end;  
  j:=0;
  for i:=1 to length(s) do
  if (a[ord(s[i])]>=2) then continue
  else 
  begin
    inc(j);
    s[j]:=s[i];
  end;  
  delete(s,j+1,length(s)-j);
  writeln('новая строка: ',s);
end.
lugowskayatania2017
2^n в двоичной системе - это 1 и n нулей после неё. Например, 2^5(10) = 100000(2)
Приведём все степени к основанию 2

2^3702-2^468+2^1620-108

-108 можно представить как -128 + 16 + 4

2^3702-2^468+2^1620-2^7 + 2^4 + 2^2

Теперь выстраиваем степени в порядке убывания:

2^3702+2^1620-2^468-2^7 + 2^4 + 2^2

В выражении два вычитания подряд, избавимся от этого, заменив -2^468 на -2^469 + 2^468

2^3702+2^1620 -2^469+2^468-2^7 + 2^4 + 2^2

2^3702 - 1 единица
2^4 - 1 единица
2^2 - 1 единица

Количество единиц в вычитаниях будет равно разнице степеней. Например 1000000-100=1111

2^1620 -2^469 - количеств единиц 1620-469 = 1151
2^468-2^7 - количество единиц 468-7 = 461
Общее количество единиц равно 3+1151+461 = 1615

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

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

Вэлектронной библиотеке хранится 10000000 книг. для их удобного поиска решили ввести следующую систему обозначений - каждой книге присваивается идентификатор, состоящий из двух частей: 1. последовательность цифр длиной 3 (допустимы все 10 десятичных цифр 2. некоторая последовательность букв определенной длины, одинаковой для всех книг (допустимы 26 букв латинского алфавита). какой длины должна быть последовательность букв, чтобы уникально идентифицировать все книги в библиотеке?
Ваше имя (никнейм)*
Email*
Комментарий*

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

novkatrina
Татьяна1856
egorov
muz-cd
dzo-dzo
secretar62
zharovaleks
Deniskotvitsky6422
Lusiarko65
oksanata777
steam22-9940
bondarev05071962
Chikichev456
Serkova_Elena251
Ivanovich_Kostik898