В
Все
М
Математика
О
ОБЖ
У
Українська мова
Д
Другие предметы
Х
Химия
М
Музыка
Н
Немецкий язык
Б
Беларуская мова
Э
Экономика
Ф
Физика
Б
Биология
О
Окружающий мир
Р
Русский язык
У
Українська література
Ф
Французский язык
П
Психология
А
Алгебра
О
Обществознание
М
МХК
В
Видео-ответы
Г
География
П
Право
Г
Геометрия
А
Английский язык
И
Информатика
Қ
Қазақ тiлi
Л
Литература
И
История
grigorijperever
grigorijperever
28.08.2020 14:02 •  Информатика

Игорь Сергеевич уже много лет ведет занятия в школьном кружке по информатике и рассчитывает на триумф своих воспитанников в этом году. По удачному стечению обстоятельств в этом году под его руководством собралось множество талантливых ребят, которые могут принести славу не только школе, но и всему городу. В школьном кружке на данный момент учатся
N
учеников,
M
из которых пишут на языке программирования С++, а остальные пишут на языке Cobol. Игорь Сергеевич обратил внимание на статистику олимпиад лет и заметил, что команды, которые пишут на языке C++, в среднем добиваются лучших результатов на олимпиадах. Для того чтобы все
N
учеников писали на языке C++, он разработал план.

План заключается в следующем: каждую неделю Игорь Сергеевич будет проводить тренировки, в которых будут участвовать команды по
K
человек, при этом распределение школьников на команды может меняться по его усмотрению. Игорь Сергеевич считает, что в результате тренировки внутри каждой команды выбирается язык программирования, на котором пишут большинство её участников, а меньшинство переучивается на новый выбранный язык. При этом язык, на котором писало меньшинство раньше, забывается.

Для примера, если в команде из 11 человек 7 человек пишут на Cobol, а остальные 4 — на C++, то к концу тренировки все 11 участников команды будут писать на Cobol, а С++ будет ими забыт.

Игорь Сергеевич хочет выработать методику тренировок, рассчитанную на безоговорочную победу. Требуется написать программу, которая определит за какое минимальное количество тренировок все ученики перейдут на С++.

Входные данные
В первой строке дается одно целое число
N
— общее количество учеников в школе (
1

N

10
9
).

Во второй строке дается одно целое число
M
— количество учеников, пишущих на языке С++ (
1

M

10
9
).

В третьей строке дается одно целое число
K
— количество людей в одной команде (
1

K

10
9
).

Гарантируется, что
N
делится без остатка на
K
, а
K
— нечетное.

Выходные данные
Ваша задача вывести одно число — минимальное количество тренировок, которое необходимо провести для того, чтобы все школьники начали писать на С++. Если добиться того, чтобы все школьники начали писать на С++ невозможно, то выведите число -1.

Показать ответ
Ответ:
Alihan184
Alihan184
29.05.2022 02:34
Дано:

Количество символов: 200*50*80

Количество рисунков: 10

Параметры рисунка:

K = 800×600N = 16 цветов

I -  ?

Решение:

Находим информационный объем текста:

В условии не сказано, в какой кодировке записан текст, поэтому считаем как 1 байт.

I[текста]  =  200*50*80*1  =  800 000 байт.

Находим информационный объем рисунка:

i = log₂N = log₂16 = 4 бита

I[рисунка] = K*i = 800*600*4 = 1 920 000 бит = 240 000 байт.

I[рисунков] = I[рисунка] * 10 = 2 400 000 байт.

Находим информационный объем книги:

I = I[текста] + I[рисунков] = 800000 + 2400000 = 3200000 байт

I = 3200000 байт = 3125 КБ ≈ 3,05 МБ

ответ:  3125 КБ (примерно 3,05 МБ)

0,0(0 оценок)
Ответ:
muravyov1910
muravyov1910
17.02.2022 11:57
Const
  nm = 50;

type
  Data = record
    day: 1..31;
    month: 1..12;
    year: integer
  end;
  lichn = record
    famnam: string;
    datr: Data
  end;
  listlichn = array [1..nm] of lichn;

var
  m: listlichn;
  n: integer;

procedure GetLichn(k: integer);
begin
  Write(k, ') Введите через пробел фамилию, имя: ');
  Readln(m[k].famnam);
  Writeln('Введите через пробел день, месяц и год рождения: ');
  Readln(m[k].datr.day, m[k].datr.month, m[k].datr.year)
end;

procedure WriteLichn(k: integer);
begin
  Writeln(m[k].famnam, ' ', m[k].datr.day, '.', m[k].datr.month, '.', m[k].datr.year)
end;

procedure Vvod(var p: integer);
var
  i: integer;
begin
  Write('Введите количество лиц n (максимум 50) -> ');
  Readln(p);
  if p <= 50 then for i := 1 to p do GetLichn(i)
  else begin Writeln('Вы ввели неправильное значение'); p := 0 end
end;

procedure Zapros1;
 { фамилии и имена тех кто родился в месяц l года }
var
  i: integer;
  l: 1..12;
begin
  Write('Введите номер месяца рождения (1-12): ');
  Readln(l);
  for i := 1 to n do
    if m[i].datr.month = l then WriteLichn(i)
end;

procedure Zapros2;
 { фамилии и имена тех кто родился в год a }
var
  a, i: integer;
begin
  Write('Введите год рождения: ');
  Readln(a);
  for i := 1 to n do
    if m[i].datr.year = a then WriteLichn(i)
end;

procedure Zapros3;
 { фамилии и имена тех чья дата рождения z.l.a }
var
  a, i: integer;
  z: 1..31;
  l: 1..12;
begin
  Write('Введите через пробел день, месяц и год рождения: ');
  Readln(z, l, a);
  for i := 1 to n do
    if (m[i].datr.year = a) and (m[i].datr.month = l)
      and (m[i].datr.day = z) then
      WriteLichn(i)
end;

begin
  Vvod(n);
  Zapros1;
  Zapros2;
  Zapros3
end.

Тестовое решение:
Введите количество лиц n (максимум 50) -> 3
1) Введите через пробел фамилию, имя: Иванов Иван
Введите через пробел день, месяц и год рождения:
24 12 1973
2) Введите через пробел фамилию, имя: Петров Петр
Введите через пробел день, месяц и год рождения:
05 03 1982
3) Введите через пробел фамилию, имя: Козлова Екатерина
Введите через пробел день, месяц и год рождения:
1 12 1994
Введите номер месяца рождения (1-12): 12
Иванов Иван 24.12.1973
Козлова Екатерина 1.12.1994
Введите год рождения: 1982
Петров Петр 5.3.1982
Введите через пробел день, месяц и год рождения: 5 3 1982
Петров Петр 5.3.1982
0,0(0 оценок)
Популярные вопросы: Информатика
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?
Спроси ai-бота