# PBinfo #1105 – TG – Rezolvare C++

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

## Enunț

Fie un număr natural N. Spunem că (a, b, c) este un triplet geometric limitat de N, dacă  a, b și c sunt trei numere naturale astfel încât 1 ≤ a < b < c ≤ N și \( b = \sqrt {a \cdot c} \).

Cerinţă
Să se determine numărul tripletelor geometrice limitate de numărul natural N.

Date de intrare 
Fişierul de intrare tg.in conţine pe prima linie un număr natural N.

Date de ieşire
În fişierul de ieşire tg.out se va scrie numărul tripletelor geometrice limitate de N.

Restricţii şi precizări

4 ≤ N ≤ 4.000.000

Exemplu:
tg.in

8
tg.out

2
Explicație
 Cele două triplete sunt (1, 2, 4) și (2, 4, 8).

## Cod sursă C++

```cpp
#include <fstream>
#include <algorithm>
using namespace std;
ifstream fin("tg.in");
ofstream fout("tg.out");
int N;
bool ok[4000010];
long long sol;
int main()
{
    fin >> N;
    for (int i = 1; i <= N; ++i)
        if (!ok[i])
            for (int j = 1; i * j * j <= N; ++j)
            {
                sol += j - 1;
                ok[i * j * j] = true;
            }
    fout << sol << '\n';
    fin.close();
    fout.close();
}
```

## Resurse

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