Ссылка оригинальную статью
Ссылка Try Haxe!
Условие задачи:
В массиве $А(n)$ каждый элемент, кроме первого, заменить суммой всех предыдущих элементов.
Тесты:
Ввод | Вывод |
1 1 1 1 1 1 | 1 1 2 3 4 5 |
3 5 2 9 0 4 65 156 1 | 3 3 8 10 19 19 23 88 244 |
2 -7 3 8 -4 5 -2 4 2 | 2 2 -5 -2 6 2 7 5 9 |
Код:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
class Main { static function main() { var n = getNextInt(); var a = new Array(); for (i in 0...n) { a[i] = getNextInt(); } var sum = a[0]; for (i in 1...a.length) { var tmp = a[i]; a[i] = sum; sum += tmp; } var output = Sys.stdout(); for (i in 0...n) { output.writeString(Std.string(a[i]) + " "); } } static function getNextInt() { var number = Sys.stdin().readLine(); return Std.parseInt(number); } } |
Ход решения:
Для начала заполняем массив числами, которые вводит пользователь. После этого начинаем заменять элементы в массиве суммой предыдущих элементов. Но для того, чтобы не заводить новый массив, нужно запомнить текущий элемент массива, чтобы не потерять его при нахождении суммы. Так происходит для каждого элемента
Николай Яковлев недавно публиковал (посмотреть все)
- e-olymp 1108. Червячные дыры - 06.06.2017
- e-olymp 1077. Java против C++ - 02.05.2017
- A711a - 02.05.2017
Использование вспомогательной функции так, как это сделали вы категорически не допустимо. Вместо линейной сложности задача получает квадратичную. Т.е. такое использование функции заставляет программу работать во столько раз медленнее, сколько в массиве элементов.
Хотел обойтись без вспомогательного массива и, видимо, немного погарячился. Исправил без функции. Проверьте, пожалуйста
Ссылка на try.haxe
Ссылка на соответствующую задачу на cpp.mazurok.com
Уже лучше. Теперь попробуйте заменить все вхождения буквы [latex]b[/latex] на букву [latex]a[/latex]. После — убрать дублирующиеся и бессмысленные строки. Запустить код программы. Результат должен остаться таким же и нет лишнего массива.
Добавил ссылки, исправил код на использование только одного массива
Вы справились с этой головоломкой 🙂