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

Розмір масиву 20
тип даних цілий
Впорядкувати за зростанням другу половину масиву(с++)​

Показать ответ
Ответ:
ekatsinrom
ekatsinrom
04.11.2021 00:30

Месяц находим методом половинного деления.

Двоичная запись числа 366 размещается в 9 битах (в 8 битах размещается только 256 чисел , а в 9 битах - уже 512).

То есть , понадобится задать 8 вопросов и девятой фразой будет ответ.

В году 365 (366) дней. Пусть 366, для 365 рассуждение то же.

Рассмотрим самый худший вариант

Середина года - день номер 366/2=183. Это 1 июля.

Первый вопрос: День рождения в первой половине года?

Допустим, да.

Второй вопрос: День рождения в первом квартале?

Допустим, нет. Следовательно во втором.

Второй квартал - это дни с номерами от 92 до 182. Середина - среднее арифметическое. (92+182)/2=137. Это дата 17 мая.

Третий вопрос: День рождения позднее 17 мая?

Допустим, нет.

Следовательно, интервал дат 1 апреля - 17 мая, 91 день. Опять делим на 2, сужая интервал до 22 дней. Это дата 22 апреля.

Четвертый вопрос: День рождения позднее 22 апреля?

Допустим, нет.

Новый диапазон поиска - 23 апреля - 17 мая. Половиним его.

Пятый вопрос: День рождения позднее 29 апреля?

Допустим, нет.

Поиск сузился до 23 - 29 апреля. Снова берем половину.

Шестой вопрос: День рождения позднее 26 апреля?

Допустим, нет.

Интервал дат 23-26 апреля. Половиним.

Седьмой вопрос: День рождения позднее 24 апреля?

Допустим, да.

Интервал дат 25-26 апреля.

Восьмой вопрос: День рождения 25 апреля?

Допустим, нет

Девятая фраза: Ваш день рождения 26 апреля.

0,0(0 оценок)
Ответ:
Artanian
Artanian
03.10.2021 15:22

Задача 10.

var

 flag, a: integer;

 n: longint;

begin

 Write('n -> '); Readln(n);

 flag := 0;

 

 while (n <> 0) do

 begin

   a := n mod 10;

   if (a = 3) then flag := 1;

   n := n div 10;

 end;

 

 if (flag = 1) then Writeln('Цифра 3 есть в записи числа')

 else Writeln('Цифры 3 не встречается в записи числа');

 Readln;

end.

Задача 11.

var

 a, flag_2, flag_5: integer;

 n: longint;

begin

 Write('n -> ');

 Readln(n);

 

 flag_2 := 0;

 flag_5 := 0;

 repeat

   a := n mod 10;

   

   if (a = 2) then flag_2 := 1

   else if (a = 5) then flag_5 := 1;

   

   n := n div 10;

 until n = 0;  

 

 if (flag_2 = 1) and (flag_5 = 1) then Writeln('Цифры 2 и 5 есть в записи числа')

 else if (flag_2 = 1) and (flag_5 = 0) then Writeln('В записи числа присутствует цифра 2, но отсутствует цифра  5')

 else if (flag_2 = 0) and (flag_5 = 1) then Writeln('В записи числа присутствует цифра 5, но отсутствует цифра  2')

 else Writeln('Цифры 2 и 5 не встречаются в записи числа');

 Readln;

end.

Задача 13.

var

 a, k, i: integer;

 n: longint;

begin

 write('n -> ');

 Readln(n);

 Write('k -> ');

 Readln(k);

    i := 0;

 repeat

   a := n mod 10;

   if a = 5 then i := i + 1;

   n := n div 10;  

 until n = 0;

 

 if (i > k) then Writeln('Не верно')

 else Writeln('Верно');

 Readln;

end.

Задача 14.

var

 a, k_0, k_9: integer;

 n: longint;

begin

 write('n -> ');

 Readln(n);

 

 k_0 := 0;

 k_9 := 0;

 repeat

   a := n mod 10;

   if a = 0 then k_0 := k_0 + 1

   else if a = 9 then k_9 := k_9 + 1;

   n := n div 10;  

 until n = 0;

 if (k_0 > k_9) then Writeln('Нолей больше')

 else if (k_9 > k_0) then Writeln('Девяток больше')

 else if (k_9 = 0) and (k_0 = 0) then Writeln('В числе отсутствуют 0 и 9')

 else Writeln('Их одинаковое количество');

 Readln;

end.

Задача 15.

var

 min, a: integer;

 n: longint;

begin

 write('n -> ');

 Readln(n);

 min:=10;

 while n <> 0 do

   begin

   a := n mod 10;

   if a < min then min := a;

   n := n div 10;  

 end;

 Writeln('Минимальная цифра ', min);

 Readln;

end.

Задача 16.

var

 first_digit, last_digit, k: integer;

 n: longint;

begin

 write('n -> ');

 Readln(n);

 

 k := 1;

 // найдём разряд последней цифры в числе

 while n div k >= 10 do

 begin

   k := k * 10

 end;

 

 // первая цифра

 first_digit := n mod 10;

 // последняя цифра

 last_digit := n div k;

 

 // если первая и последняя цифра числа равны то нет необходимости менять первую и последнюю цифру местами

 if (first_digit = last_digit) then

   Write(n)

 else

   Writeln(first_digit * k + (n mod k div 10) * 10 + last_digit);

end.

0,0(0 оценок)
Популярные вопросы: Информатика
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?
Спроси ai-бота