Задача: Даны натуральное число [latex]n[/latex], действительные числа [latex]{ a }_{ 1 },\dots ,{ a }_{ n }[/latex]
Вычислить: [latex]{ a }_{ 1 }-{ a }_{ 2 }+{ a }_{ 3 }-\dots +{ (-1) }^{ n+1 }{ a }_{n }[/latex]
(В этой задаче не требуется хранение исходных последовательностей значений)
n | [latex]{ a }_{ 1 },\dots ,{ a }_{ n }[/latex] | Sum |
5 | 7 4 3 3 3 | 6 |
10 | 1 1 2 2 3 3 4 4 5 6 | -1 |
15 | 66 456 3334 23 0.86 -587 4332 82223 0.0008 0 -0.75 44 52 7777 43 | -82108.9 |
5 | 0.0005 0.0006 0.06 0.00008 0.00003 | 0.05985 |
Код программы на С++
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
#include <iostream> #include <cmath> using namespace std; int main() { int n; double sum=0, p; cin >> n; for(int i=1; i<=n; i++){ cin >> p; //вводим значение а sum+=(i%2)? p:p*(-1); //определяем его знак и сумируем //cout << "Step" << i << "\t P: " << p << "\tSum: " << sum << "\n"; } // включив строку выше можно просмотреть каждый шаг программы cout << "Sum:" << sum ; return 0; } |
Код программы на Java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
import java.util.*; import java.lang.*; import java.io.*; class Main { public static void main (String[] args) throws java.lang.Exception { Scanner in=new Scanner(System.in); int n; double sum=0, p; n=in.nextInt(); for(int i=1; i<=n; i++){ p=in.nextDouble(); //вводим значение а if(i%2==1)//определяем его знак и сумируем sum+=p; else sum+=-p; } System.out.print("Sum: " + sum); } } |
Смысл решения прост — мы считываем количество чисел, которые нам в последствии предоставят. делается это для того, чтобы наш цикл мог точно закончится. Затем считывая каждое число присваиваем ему соответствующий знак и суммируем. Как и просили в условии — исходные значения не сохраняются.
Возведение в степень для обозначения чередования знаков принято в математике. Но это не алгоритм, а только обозначение.
А алгоритмов можно придумать несколько:
— следить за чётностью счётчика i: i % 2? 1 : -1,
— описать int sign = 1 и менять знак в цикле: sign = -sign.
И нужна ссылка для выполнения кода. Например, в ideone.com.
Принято.
Только -р выглядит яснее чем р*(-1)