pakrauce
@pakrauce

Правильно ли я решаю задачу?

Задача:
В стакане размножаются амебы. Амебы размножаются делением на две. Деление происходит 1 раз в секунду. Если в пустой стакан посадить одну амебу, то он заполнится амебами через 1 минуту. Через какое время пустой стакан будет заполнен амебами, если посадить туда сразу две амебы?

Как я решил её:
function getReproductionTime(reproductionSpeed, amoebasQuantuty, glassCapacity) {
  //цикл от пустого стакана (0) до полного (capacity)
  //увеличивается на скорость размножения
  //в цикле первоначальное количество амеб удваивается
  for (i = 0; i < glassCapacity; i += reproductionSpeed) {
    amoebasQuantuty *= 2;
    //стакан заполнился, значит мы полуичли reproduction time
    if (amoebasQuantuty >= glassCapacity)
      return i;
  }
}

function getGlassCapacity(reproductionSpeed, amoebasQuantuty, reproductionTime) {
  //цикл от 0 секунд до время размножения, увеличивается на скорость
  //в цикле амебы удваиваются
  for (i = 0; i < reproductionTime; i += reproductionSpeed) {
    amoebasQuantuty *= 2;
  }
  return amoebasQuantuty;
}

let glassCapacity = getGlassCapacity(1, 1, 60);
console.log('Glass capacity is ' + glassCapacity + ' amoebas');

let start = 2;
let reproductionTime = getReproductionTime(1, start, glassCapacity);
console.log('Start with ' + start + ' amoebas. Glass is full in ' + reproductionTime + ' seconds');

Вроде задачка простая, но я уже не уверен, правильно ли я ее решил или совсем в корне неверно. Смущает огромная цифра в результате и не сильно отличающееся время от 1 минуты.

Glass capacity is 1152921504606847000 amoebas
Start with 2 amoebas. Glass is full in 58 seconds
  • Вопрос задан
  • 1801 просмотр
Решения вопроса 1
Это же задачка на логику(арифметику), а не на программирование.
Если посадили 2 амебы - то это то же самое, что и одна амёба через секунду.
Т.е. вы сэкономили одну секунду, ответ 59.
А не сходится у вас видмо потому что i должен с 1 начинаться а не с 0.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы