Условие
По заданным числам $n$ и $a$ вычислить значение суммы: $\sum \limits_{i=1}^{n} i⋅ a^{i}$
Входные данные
Два натуральных числа $n$ и $a$.
Выходные данные
Значение суммы.
Тесты
Входные данные | Выходные данные |
3 3 | 102 |
4 4 | 1252 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
class Main { static function main() { var n:Int = Std.parseInt(Sys.stdin().readLine()); var a:Int = Std.parseInt(Sys.stdin().readLine()); var exp:Int = a; var sum:Float = 0; for (i in 1...n + 1) { sum += i * exp; exp *= a; } Sys.println(sum); Sys.exit(0); } } |
Решение
Вводим числа $n$ и $a$. Далее заходим в цикл от $1$ до $n$ включительно, так как $n$-й элемент нам тоже нужно суммировать. В каждой итерации цикла возводим число $a$ в $i$-ю степень, умножаем на $i$ и все это прибавляем к переменной $sum$. После завершения цикла выводим переменную $sum$.
Евгений Кравчук недавно публиковал (посмотреть все)
- A703 - 08.06.2017
- Ю4.12 - 07.06.2017
- e-olymp 1210. Очень просто!!! - 26.03.2017
Пожалуйста, не используйте функцию pow(x,y). Она хороша для приближенного возведения чисел в действительную степень разложением в ряд Тейлора. Здесь-то она зачем?
Вы взяли за образец решение задачи, которое студенту так и не зачли. Возможно он когда-нибудь вернется в университет и решит эту задачу, но пока она повисла.
Добавил собственную функцию для степени.
Мелочи — пределы суммирования должны быть над и под знаком суммы, звездочка для обозначения умножения обычно в математических формулах не используется.
Важное — у Вас фактически получаются вложенные циклы. Например, если Вы на каком-то шаге сто раз умножаете число само на себя, то на следующем шаге для получения 101-й степени все начинаете сначала. а ведь вполне достаточно просто один раз домножить 100ю степень на число.
Все подправил. Думаю, теперь все в порядке)