Se consideră șirul 1, 3, 7, 13, 21, 31, 43 ... definit astfel: f0=1, iar fn=fn-1+2n, dacă n≥1 (unde n
este un număr natural).
Se citesc de la tastatură două numere naturale din intervalul [1,109], x și y (x<y), reprezentând doi
termeni aflați pe poziții consecutive în șirul dat, și se cere să se scrie în fișierul text bac.out, separați
prin câte un spațiu, toți termenii șirului mai mici sau egali cu y, în ordine inversă a apariției lor în șir.
Proiectați un algoritm eficient din punctul de vedere al spațiului de memorie și al timpului de executare.
Exemplu: dacă x=21 și y=31, fişierul conţine valorile
31 21 13 7 3 1
Răspunsuri la întrebare
Răspuns de
1
Răspuns:
#include <iostream>
#include <fstream>
using namespace std;
int main()
{
ofstream f("bac.out");
int x = 21, y = 31;
int n = (y - x) / 2;
f << y << " " << x << " ";
n -= 1;
int numar;
int numar_precedent = x;
for (int i = n; i > 0; i--)
{
numar = numar_precedent - 2 * i;
f << numar << " ";
numar_precedent = numar;
}
f.close();
return 0;
}
Explicație:
Alte întrebări interesante
Matematică,
8 ani în urmă
Evaluare Națională: Lb. Română ,
8 ani în urmă
Studii sociale,
8 ani în urmă
Matematică,
8 ani în urmă
Matematică,
8 ani în urmă
Limba română,
9 ani în urmă
Limba română,
9 ani în urmă
Matematică,
9 ani în urmă