Найти сумму вида: -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;
}}
Ответы
#include <iostream>
using namespace std;
int main()
{
int m=1, n, sum=0;
cin >> n;
for(int i=1; i<=n; m+=i, i++)
sum = (m%2) ? sum-m : sum+m;
cout << sum << endl;
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 будет проходить проверку.