Informatică, întrebare adresată de passbrain123, 9 ani în urmă

Generare de sir, in ordine inversa.
Problema data anul acesta la bac, in sesiunea speciala din mai.
Ideea este sa faci programul cat mai eficient. Ceea ce inseamna ca se lucreaza fara vector.

Am atasat cerinta si o posibila rezolvare. Dar nu imi dau seama pe moment cum sa generez de la coada spre cap, iar complexitatea sa fie O(n).

Anexe:

Răspunsuri la întrebare

Răspuns de ardyarde
0
#include <iostream>
#include <fstream>
using namespace std;

int main()
{
   int n,i;
   cin>>n;
   int v[n+1];
   for(i=1;i<=n;i++)
   {
   if(i==1)
    v[i]=1;
   else if(i==2)
    v[i]=-1;
   else
    v[i]=1-2*v[i-1]-v[i-2];
   }
   ofstream fisier;
   fisier.open("bac.out.txt");
   fisier<<"test";
   for(i=n;i>0;i--)
    fisier<<v[i]<<" ";
    fisier.close();
return 0;
}

passbrain123: E o solutie, dar nu se primeste punctaj maxim pentru ea. n trebuie sa fie din intervalul 10^9, ceea ce nu e ok cu vector. Am spus si in cerinta.
passbrain123: Algoritmul trebuie sa fie eficient din punct de vedere al spatiului de memorare
ardyarde: #include <iostream>
#include <fstream>
using namespace std;

int main()
{
int i,n;
ofstream fisier("bac.out");
cin>>n;
for(i=n;i>0;i--)
if(i%2==0)
fisier<<-i/2<<" ";
else
fisier<<(i+1)/2<<" ";
fisier.close();
return 0;
}
passbrain123: Da. Mersi. Asta daca-ti dai seama de formula.
ardyarde: Mi-o luat cateva zile da mi-am dat seama :))
Alte întrebări interesante