Задача
Даны значения чисел [latex]n[/latex] и [latex]a[/latex]. Вычислить [latex]\sum_{i=1}^{n}
i* a^{i}[/latex].
Тесты
Ввод: | 3 2 | 6 4 | 10 2 |
Вывод: | 34 | 30948 | 18434 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
#include <iostream> #include <cmath> using namespace std; int main() { int n, a; long long sum = 0; cin >> n >> a; for (int i = 1; i <= n; i++){ //пока i не будет равно n sum += pow(a,i)*i ; //программа будет суммировать эту формулу } //с увеличением значения переменной i на 1 if (n=1){ cout<<a; } cout << sum; return 0; } |
Вводим два числа [latex]n[/latex],[latex]a[/latex] и [latex]sum[/latex] . Задаем цикл и суммируем до тех пор, пока [latex]i[/latex] не будет равно значению [latex]n[/latex].
— Не нужно использовать функцию pow() для целых степеней. Нужно воспользоваться умножением. Вы же видите, что степень в каждом слагаемом отличается на единицу. Значит, если хранить степень в специальной переменной, то на каждом шаге цикла достаточно будет её домножить на [latex]a[/latex].
— Найдите способ поставить в latex пределы суммирования над и под знаком суммы, как в условии.
— Исправьте название по этому образцу.
— Вы пишите «Вводим два числа n,a и sum». Что-то мне в этой фразе кажется странным. А Вам? И не только отсутствие пробела после запятой. Получилось вроде «Жили-были две девочки — Оля, Маша и Николай Сергеевич».
— Пожалуйста, указывайте категорию. Сейчас я указал за Вас. В будущем — смотрите на заголовок столбца таблицы с заданиями.
— Для хранения значений [latex]n[/latex] и [latex]a[/latex] Вы выбрали тип данных long long. А сумму, которая превышает [latex]a^n[/latex] вы храните в переменной типа int. Это не только противоречит условию, но и совершенно не логично.
— У задачи есть лёгкий особый случай при [latex]a=1[/latex]. Получается сумма чисел натурального ряда. Вы в школе учили такую формулу в разделе арифметическая прогрессия. Возможно, этот случай придётся закодировать отдельно.
— Обязательно добейтесь 100% прохождения тестов на сайте e-olymp.com. Сейчас решение проходит только половину тестов.
А так — всё хорошо.