Никита256366
14.01.2020 19:29

Решите задачу в python быстрее!

— А разве ещё что-нибудь есть? — с надеждой с Пух, снова оживляясь.

Кролик заглянул во все кастрюли и банки и со вздохом сказал:

— Увы, совсем ничего не осталось.

— Я так и думал, — сочувственно сказал Пух, покачав головой. — Ну, до свиданья, мне пора идти.

Как вы помните, из этого ничего не вышло. Он застрял! А если отмотать события немного назад, сколько можно было съесть, чтобы все-таки пролезть в дверь?

Напишите программу, которая определит, на сколько единиц ещё можно увеличить объем Винни-Пуха, чтобы он не застрял.

Формат ввода
Целое число — на сколько единиц можно увеличить объем Винни Пуха, чтобы он ещё пролез в дверь. Затем строки мёд, сгущенное молоко или хлеб, пока не будет введена строка Ничего не осталось.

Формат вывода
Считая, что мёд увеличивает объем на 1 единицу, сгущённое молоко на две, а хлеб на три, вывести, сколько ещё единиц осталось до критического значения, или строку Не пролезает. Если значение оказалось равно критическому, то осталось 0 единиц, но всё ещё пролезает.

Пример 1
Ввод Вывод
7
мёд
сгущенное молоко
мёд
Ничего не осталось
3
Пример 2
Ввод Вывод
1
хлеб
Ничего не осталось
Не пролезает

Нажмите на рекламу ниже и сразу увидите ответ
Популярные вопросы:
Ответ:
FadePLAY
04.02.2020 19:58
Class ArrayMultiplication{
 public static void main(String args[]){
  String fileName = "Array.txt", aNum = ""; int nArray[] = new int[201], iChar; nArray[0] = 0; long rMulti;
  java.io.FileReader iFile = null; java.io.FileWriter oFile = null;
  try{
   iFile = new java.io.FileReader(fileName);
   while((iChar = iFile.read())!=-1)
    if(iChar!=' ')aNum+=(char)iChar;
    else {nArray[++nArray[0]] = new Integer(aNum);aNum="";}
   if(!aNum.equals(""))nArray[++nArray[0]] = new Integer(aNum);
   oFile = new java.io.FileWriter(fileName);
   for(rMulti = 1; nArray[0]>0; nArray[0]--)rMulti*=nArray[nArray[0]];
   oFile.write(rMulti+"");
  }catch(java.io.FileNotFoundException fnfe){
   System.out.println("Файл не был найден!");
  }catch(java.io.IOException ioe){
   System.out.println("Ошибка ввода/вывода в файл!");
  }finally{
   try{
 iFile.close(); oFile.close();
   }catch(java.io.IOException ioe){
 System.out.println("Ошибка закрытия файла ввода/вывода!");
   }
  }
 }
}
0,0(0 оценок)
Ответ:
artemp20012
01.09.2020 14:49

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

Двоичная запись числа 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 оценок)
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?
Спроси ai-бота