Вот что мне нужно сделать: Улитка поднимается на 7 футов каждый день и соскальзывает на 2 фута каждую ночь. За сколько дней улитка выберется из колодца заданной глубины?
Пример ввода: 31
Пример вывода: 6
Пояснение: Давайте разберем расстояние, которое улитка преодолевает каждый день:
Day 1: 7-2=5
Day 2: 5+7-2=10
Day 3: 10+7-2=15
Day 4: 15+7-2=20
Day 5: 20+7-2=25
Day 6: 25+7=32
Итак, на 6-й день улитка достигнет 32 футов и выберется из колодца днем, не соскальзывая обратно за ночь.
Это код, который я написал до сих пор:
function main() {
var depth = parseInt(readLine(), 10);
//your code goes here
}
Пожалуйста, помогите мне, я действительно застрял.
За день и ночь улитка набирает в общей сложности 5 футов. Загвоздка здесь в том, что этот выигрыш состоит из набора 7 футов, а затем отступления на 2. Другой способ думать об этом состоит в том, что цель на 2 меньше, чем фактическая цель, но продвигается на 7-2=5 футов в день.
Чтобы сформулировать это в Javascript, вам нужно вычесть 2 из расстояния, разделить его на 5 и зафиксировать результат, чтобы получить количество дней в виде целого числа:
function numDays(distance) {
return Math.ceil((distance - 2) / 5);
}
Это довольно простой вопрос,
function main() {
var depth = parseInt(readLine(), 10);
//your code goes here
i = 0;
for (; depth > 0;) {
i++;
depth -= 7
if (depth > 0) {
depth += 2
}
}
console.info(i);
}
Что в основном делает этот код:
Он устанавливает переменную i, которая равна 0, чем когда глубина больше 0, 1 увеличивается на 1, что означает, что к ней добавляется 1 - это будет подсчитывать дни, которые это займет. Но мы должны учитывать и ночи, как говорится, он не упадет ночью, если весь день карабкается по нему. Таким образом, мы ставим еще + 2, если -7 не дает 0.
Вы можете прочитать о циклах for здесь: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/for
Я заметил, что вы новичок в переполнении стека, поэтому, пожалуйста, в следующий раз, когда вы спросите, сделайте код и исследуйте самостоятельно. Вы упомянули, что закодировали некоторые биты, но вы только что указали функцию, которая так же ничего не пишет и не просит ответа - переполнение стека - это не ваш сайт для решения домашних заданий! -
function main(distance) {
var depth = parseInt(distance);
//your code goes here
var day = 0;
var total = 0;
while(total<depth){
day = day + 1;
total = total + 7;
if (total >= depth){
console.info(day);
break;
}
total = total - 2;
}
}
main(32)
main(51)
Этот вопрос довольно простой, но сложный;
Глубина уже определена: " var depth = parseInt(readLine(), 10);" Так что вам не нужно беспокоиться о том, чтобы снова объявить глубину. Поэтому нам нужно объявить переменную для дня и общего расстояния в начале, которое вар день = 0 ; и var total = 0 ; .Итак, вот решение:
функция основная () { var depth = parseInt(readLine(), 10); //определение глубины
//your code goes here
var day = 0; //defining day
var total = 0; // distance which is at zero
while(total<depth){
day += 1;
total += 7; // if the total distance is less than depth of the well the day is added by one and distance is added by 7
if (total >= depth){
break; // but if the total is equal to or greater than depth the loop will break
}
total -= 2; // 2 is deducted from every step in loop except when the loop is about to ends(where the loop breaks when total=depth).
}
}
function main() {
var depth = parseInt(readLine(), 10);
//your code goes here
var result = depth / 5;
console.info(Math.round(result));
}