• Задача 3. Расстановка знаков Легенда гласит, что Карл Фридрих Гаусс, учась в школе, смог быстро посчитать сумму всех целых чисел от 1 до 100, заметив, что 1 + 100 = 2 + 99 = … = 50 + 51 = 101. Поэтому сумма всех целых чисел от 1 до 100 равна 101 × 50 = 5050. Теперь решите задачу посложнее: как расставить перед каждым из чисел от 1 до N знаки «+» или «−» так, чтобы сумма получившихся чисел была равна 0? Например, для N = 3 сумма −1 −2 +3 будет равна 0. Решите эту задачу для четырёх значений N: N = 8, N = 15, N = 40, N = 99. Ответ на эту задачу нужно записать в виде 4 строк. Каждая строка должна содержать только знаки «+» и «−». В первой строке должно быть 8 знаков, во второй строке – 15, в третьей – 40, в четвертой – 99. Последовательность знаков в каждой строке соответствует последовательности знаков, которые нужно расставить перед числами 1, 2, …, N так, чтобы сумма была равна 0. Например, для N = 3 ответ нужно записать в виде «++−» или «−−+». Если вы не можете решить задачу для какого-то значения N, то поставьте в этой строке один знак «+». Решение будет принято на проверку, если оно содержит четыре строки, каждая из которых состоит из символов «+» или «−». Количество символов в строках и правильность ответа сразу после сдачи не проверяется.

Ответы 1

  • javascript:

    function Вычислить(число) {  

    var массив = [], м1 = [], м2 = [], с1 = 0, с2 = 0;  

    for (let сч = 1; сч <= число; сч++) массив.push(сч);  

    for (let сч = число - 1; сч >= 0; сч--)  

     if (с1 > с2) { м2.push(массив[сч]); с2 += массив[сч]; }  

     else { м1.push(массив[сч]); с1 += массив[сч]; }  

    if (с1 != с2) return false;  

    else {  

     var рез = "";  

     for (let сч = 1; сч <= число; сч++)  

      if (м1.indexOf(сч) != -1) рез += "+"; else рез += "-";  

     return рез;  

    }

    }

    document.write(Вычислить(8) + "<br />");

    document.write(Вычислить(15) + "<br />");

    document.write(Вычислить(40) + "<br />");

    document.write(Вычислить(99) + "<br />");

    +--++--+

    --++--++--++--+

    +--++--++--++--++--++--++--++--++--++--+

    --++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--+

  • Добавить свой ответ

Войти через Google

или

Забыли пароль?

У меня нет аккаунта, я хочу Зарегистрироваться

How much to ban the user?
1 hour 1 day 100 years