Задача Вычислить: [latex]-\frac{a_1}{1!}+\frac{a_2}{2!}-…+\frac{(-1)^na_n}{n!}[/latex]
Тест
n | последовательность | sum(wolframalpha) |
2 | 0 0 | 0 |
2 | 5 8 | -1 |
3 | 5 8 12 | -3 |
4 | 1 2 3 24 | 1 |
5 | 0 0 0 2 3 | 0, 058333 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
#include <iostream> #include <math.h> using namespace std; int main() { int n; cin >> n; int a[n]; for (int i=0; i<n; i++) { cin >> a[i]; } double sum=0; int f=1; for (int i=1; i<=n; i++) { f*=i; double sign = (i%2==0) ? 1 : -1; sum+=(sign*a[i-1])/f; } cout << sum << endl; return 0; } |
Решение:
В этой задаче главное правильно расставить знаки, так как это повлияет на результат.Поэтому мы заводим переменную [latex]sign[/latex], которая будет следить за знаком. Далее проверяем чётность, если элемент делиться на 2 без остатка, то он получает знак [latex]+[/latex], в противном случае [latex]-[/latex]:
16 |
double sign = (i%2==0) ? 1 : -1; |
Описываем факториал:
14 15 |
for (int i=1; i<=n; i++) { f*=i; |
Выполняем суммирование и делим на факториал:
17 |
sum+=(sign*a[i-1])/f; |
Вводим в [latex]input[/latex] количество элементов ([latex]n[/latex]) и сами элементы.Получаем ответ.