Informatică, întrebare adresată de DRAKATH1058, 8 ani în urmă

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 pmarian98
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?
pmarian98: numerele patart perfecte divizibile cu 2
pmarian98: nu se pot scrie ca suma de numere consecutive
pmarian98: *patrat
Alte întrebări interesante