# PBinfo #3408 – joc2020 – Rezolvare C++

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

## Enunț

Cerința
Gigel a descoperit un nou joc. Jocul are n nivele și la fiecare nivel îți dă câte un număr natural x. Pentru a trece nivelul trebuie să calculezi câți divizori are numărul x. Scrieți un program care să permită terminarea jocului prin trecerea celor n nivele în ordinea în care sunt date. 

Date de intrare
Fișierul de intrare joc2020.in conține pe prima linie numărul n, iar pe a doua linie n numere naturale separate prin spații.

Date de ieșire
Fișierul de ieșire joc2020.out va conține pe prima linie n numere, fiecare reprezentând numărul de divizori ai numărului corespunzător din fişierul de intrare.

Restricții și precizări

1 ≤ n ≤ 500.000
numerele de pe a doua linie a fișierului de intrare vor fi mai mici sau egale cu  1.000.000
pentru 50 de puncte n ≤ 10.000

Exemplu:
joc2020.in

7
30 5 44 210 1 35 30030
joc2020.out

8 2 6 16 1 4 64 
Explicație
Numerele date au divizori astfel: 30 are 8 divizori, 5 are 2 divizori, etc.

## Cod sursă C++

```cpp
#include <fstream>
using namespace std;
ifstream in("joc2020.in");
ofstream out("joc2020.out");
int v[1000002];
int main() {
    int n, temp;
    v[1] = 1;
    for (int i = 2; i <= 1000000; i++) {
    	v[i] = 2;
    } for (int i = 2; i * i <= 1000000; i++) {
    	v[i * i]++;
        for (int j = i + 1; j * i <= 1000000; j++) {
        	v[i * j] = v[i * j] + 2;
        }
    } in >> n;
    for (int i = 1; i <= n; i++) {
        in >> temp;
        out << v[temp] << " ";
    } return 0;
}
```

## Resurse

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