# PBinfo #2820 – sir11 – Rezolvare C++

Sursa: Codul lui Andrei
Limbaj: C++
Autor rezolvare: andrei

## Enunț

Cerința
Se consideră șirul 1, -1, 2 … definit astfel: \(f_1 =1\), \(f_2 =-1\), iar \(f_n =1-2 \cdot f _{n-1} -f_{n-2}\), dacă n≥3 (unde n este un număr natural).

Se citește un număr natural, n (n∈[1,106]), și se cere să se afișeze, separați prin câte un spațiu, primii n termeni ai șirului, în ordine inversă apariției lor în acesta.

Date de intrare
Fișierul de intrare sir11.in conține pe prima linie numărul n.

Date de ieșire
Fișierul de ieșire sir11.out va conține pe prima linie, separați prin câte un spațiu, primii n termeni ai șirului, în ordine inversă apariției lor în acesta.

Restricții și precizări

Pentru determinarea și afișarea numerelor cerute se utilizează un algoritm eficient din punctul de vedere al spațiului de memorie și al timpului de executare;
	
se recomandă evitarea memorării numerelor într-un tablou sau în altă structură de date similară

în enunțul original, n∈[1,109]; datorită dimensiunilor fișierelor obținute, limita maximă a lui n a fost redusă;

Exemplu:
sir11.in

3
sir11.out

2 -1 1

## Cod sursă C++

```cpp
#include <fstream>
using namespace std;
ifstream in("sir11.in");
ofstream out("sir11.out");
int main() {
    int n;
   	in >> n; 
    for (int i = n; i >= 1; i--)
        if (i % 2 == 0)
            out << - i / 2 << " ";
        else
            out << (i + 1) / 2 << " ";
    return 0;
}
```

## Resurse

- [Pagina originală](https://codulluiandrei.ro/rezolvari/pbinfo/2820)
- [Sursa C++](https://codulluiandrei.ro/rezolvari/pbinfo/2820/cod.cpp)
- [Sursa pe GitHub](https://raw.githubusercontent.com/codulluiandrei/pbinfo/main/pbinfo-2820/main.cpp)
- [Cursuri de informatică pentru BAC](https://codulluiandrei.ro/academia/info-curs/pachet-cpp/)
