C++
As vrea si o explicatie a sursei va rog!
PBINFO #1892 Snorocos
Un număr natural nenul n se numește norocos dacă pătratul lui se poate scrie ca sumă de n numere naturale consecutive. Exemplu:
3 deoarece 3 * 3 = 2 + 3 + 4
7 deoarece 7 * 7 = 4 + 5 + 6 + 7 + 8 + 9 + 10
Cerința
Se dă un număr natural n. Dacă numărul este norocos afișați cele n numere consecutive care adunate dau pătratul acestuia.
Date de intrare
Programul citește de la tastatură numărul n.
Date de ieșire
Daca n este norocos, programul va afișa pe ecran cele n numere consecutive care adunate dau n * n, separate prin spații. In caz contrar, programul va afișa mesajul NU ESTE NOROCOS
Restricții și precizări
1 ≤ n ≤ 1000
Exemplu
Intrare
7
Ieșire
4 5 6 7 8 9 10
Explicație
7 este numar norocos iar 7 * 7 se poate scrie ca 4 + 5 + 6 + 7 + 8 + 9 + 10
Răspunsuri la întrebare
Răspuns de
1
Răspuns:
#include <iostream>
using namespace std;
int n,i,x;
int main(){
cin>>n;
x=n/2+1;// de aici incepe numaratoare nr consecutive a p.p
if (n%2==0)
//nr divizibile cu 2 nu se pot scrie ca suma de nr consecutive
cout<<"NU ESTE NOROCOS";
else
for (i=x;i<x+n;i++)
//primul termen al sumei, apoi se vor afișa n termeni consecutivi
cout<<i<<" ";
return 0;
}
Explicație:
DRAKATH1058:
Buna! Multumesc de raspuns, dar imi poti explica mai mult? De ce ai luat de la n/2 + 1 si de ce multiplii de 2 nu se pot scrie ca suma de numere consecutive?
Alte întrebări interesante
Limba română,
8 ani în urmă
Matematică,
8 ani în urmă
Matematică,
8 ani în urmă
Matematică,
8 ani în urmă
Limba română,
9 ani în urmă
Fizică,
9 ani în urmă