07_P1
Concursul judeţean de informatică 2014 „Dan Barbilian”
Clasa a VII-a
ianuarie 2014
Problema 1
Enunţ problema 100 puncte
Gigel este un elev căruia nu-i place să lucreze la matematică, preferă să se joace cu bile pe care să lipească etichete cu numere naturale. Tatăl său i-a propus: “Uite, îţi dau un număr natural impar, iar tu găseşte un număr de bile egal cu numarul primit, pentru care suma numerelor de pe etichetele bilelor să fie egală cu pătratul numărului pe care ţi l-am dat. Atenţie!, vreau ca numerele alese să fie distincte şi consecutive”.
Cerinţă
Scrieţi un program care să citească un număr natural n şi un şir x de n numere naturale x1, x2, ..., xn, şi care să determine, pentru fiecare număr xi din şirul citit, un şir format din xi numere a căror sumă să fie egală cu pătratul numărului xi.
Date de intrare
Fişierul numere.in conţine pe prima linie numărul natural n, iar următoarea linie conţine cele n numere naturale x1, x2, ..., xn, separate prin câte un spaţiu.
Date de ieşire
Fişierul numere.out va conţine n linii, câte una pentru fiecare număr din şirul x:
prima linie va conţine, în ordinea crescătoare a valorilor, separate prin câte un spaţiu, numerele naturale din descompunerea numărului x12 ca o sumă de x1 termeni nenuli distincţi.
a doua linie va conţine, în ordinea crescătoare a valorilor, separate prin câte un spaţiu, numerele naturale din descompunerea numărului x22 ca o sumă de x2 termeni nenuli distincţi.
...............
a n-a linie va conţine, în ordinea crescătoare a valorilor, separate prin câte un spaţiu, numerele naturale din descompunerea numărului xn2 ca o sumă de xn termeni nenuli distincţi.
Restricţii şi precizări
0 < n ≤ 150
1 ≤ x1, x2, ..., xn ≤ 2 000; x1, x2, ..., xn numere naturale.
Exemplu:
numere.in numere.out
4
7 5 3 9 4 5 6 7 8 9 10
3 4 5 6 7
2 3 4
5 6 7 8 9 10 11 12 13
Explicaţie
49=4+5+6+7+8+9+10
25=3+4+5+6+7
9=2+3+4
81=5+6+7+8+9+10+11+12+13
[Timp de rulare/test: 1 secundă]
Notă: se acordă 10 puncte din oficiu și 10 puncte pentru compilare.
Autor: prof. Tătulea Maria
Răspunsuri la întrebare
Răspuns de
1
Răspuns:
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("numere.in");
ofstream g("numere.out");
int n,x,i,jum,j;
int main()
{
f >> n;
for (i=1; i<=n; i++)
{
f >> x;
jum=x/2;
for (j=x-jum; j<=x+jum; j++)
{
g << j << " ";
}
g << endl;
}
return 0;
}
Explicație:
Alte întrebări interesante
Matematică,
8 ani în urmă
Matematică,
8 ani în urmă
Informatică,
8 ani în urmă
Matematică,
8 ani în urmă
Matematică,
9 ani în urmă
Limba română,
9 ani în urmă
Geografie,
9 ani în urmă