# PBinfo #3308 – ndivtri – Rezolvare C++

Sursa: Codul lui Andrei
Limbaj: C++
Autor rezolvare: deivid

## Enunț

Șirul numerelor triunghiulare e obținut prin adunarea numerelor naturale. Deci al șaptelea număr triunghiular e 1 + 2 + 3 + 4 + 5 + 6 + 7 = 28. Primii 10 termeni din șir sunt: 1, 3, 6, 10, 15, 21, 28, 36, 45, 55, ...
Să listăm toți divizorii primelor 7 numere triunghiulare:
 1: 1
 3: 1,3
 6: 1,2,3,6
10: 1,2,5,10
15: 1,3,5,15
21: 1,3,7,21
28: 1,2,4,7,14,28

Se poate observa că 28 e primul număr triunghiular care are mai mult de 5 divizori.


Cerința
Se dă un număr natural n. Să se scrie un program care determină primul număr triunghiular cu mai mult de n divizori.

Date de intrare
Programul citește de la tastatură numărul natural n.

Date de ieșire
Programul afișează pe ecran numărul x, reprezentând primul număr triunghiular care are mai mult de n divizori.

Restricții și precizări

1 ≤ n ≤ 1000

Exemplul 1:
Intrare

3
Ieșire

6
Explicație
Primul număr trunghiular care are mai mult de 3 divizori este 6.

Exemplul 2:
Intrare

1
Ieșire

3
Explicație
Primul număr trunghiular care are mai mult de un divizor este 3.

Exemplul 3:
Intrare

133
Ieșire

437580
Explicație
Primul număr trunghiular care are mai mult de 133 de divizori este 437580.

## Cod sursă C++

```cpp
#include <bits/stdc++.h>
using namespace std;
int nrDiv(int n)
{
    int nr = 1, d=2, k;
    while(n>1)
    {
        k = 0;
        while (n % d == 0)
        {
            n = n / d;
            k++;
        }
        if(k)
            nr = nr * (k + 1);
        d++;
        if(n>1 && d*d>n)
            d=n;
    }
    return nr;
}
int triunghiular(int n)
{
    int p=1, q=1, k=0, i=2;
    if (n == 1)
        return 3;
    while (k <= n)
    {
        if (i % 2 == 0)
            p = nrDiv(i + 1);
        else
            q = nrDiv((i + 1) / 2);
        k = p * q;
        i++;
    }
    return i * (i - 1) / 2;
}
int main()
{
    int n;
    cin >> n;
    cout << triunghiular(n);
    return 0;
}
```

## Resurse

- [Pagina originală](https://codulluiandrei.ro/rezolvari/pbinfo/3308)
- [Sursa C++](https://codulluiandrei.ro/rezolvari/pbinfo/3308/cod.cpp)
- [Sursa pe GitHub](https://raw.githubusercontent.com/codulluiandrei/pbinfo/main/pbinfo-3308/main.cpp)
- [Cursuri de informatică pentru BAC](https://codulluiandrei.ro/academia/info-curs/pachet-cpp/)
