Найти сумму вида: -1+2+4-7-11+16+22+.... для n элементов Число n изначально равно 0...

0 голосов
15 просмотров

Найти сумму вида: -1+2+4-7-11+16+22+.... для n элементов Число n изначально равно 0 (число i растет на 1 еденицу) то есть n=n+1 , n=n+2, n=n+3 при этом все нечетные пишутся со знаком минус. попытался как то так решить но не получилось #include #include #include using namespace std; int main() {int n,i,m=-1,s=2; cin>>n; for(i=1;i<=n;++i) {s=s+i; if(s%2==0){m+=s;} else {m=m-abs(s);} cout< return 0; }}


Информатика (96 баллов) | 15 просмотров
Дан 1 ответ
0 голосов

#include

using namespace std;

int main()

{

int m=1, n, sum=0;

cin >> n;

for(int i=1; i<=n; m+=i, i++) </p>

sum = (m%2) ? sum-m : sum+m;

cout << sum << endl;</p>

return 0;

}

Условную тернарную операцию в цикле можно заменить на:

if(m%2)

sum=sum-m;

else

sum=sum+m;

К качестве переменной суммы всего выражения возьмем sum предварительно инициализировав ее нулем.

m у нас в качестве значения определенного элемента в выражении, и начальное значение пусть будет абсолютным значением первого элемента, то есть 1.

n - количество элементов в сумме.

Теперь откроем цикл от i=1 до n включительно. Проверка первого элемента: если нечетное, то вычитает его из sum; в противном случае прибавляет в sum. В конце каждой итерации мы будем получать абсолютное значение следующего элемента по формуле m=m+i (в коде этот процесс описан в параметрах цикла, перед i++), затем с увеличением i, уже в новой итерации m будет проходить проверку.

(5.3k баллов)
0

Спасибо, ясно и понятно