Se consideră o secvență de N
numere naturale nenule.
Cerința
Determinați numărul de divizori pentru fiecare număr din secvența dată.
Date de intrare
Fișierul de intrare nrdiv.in
conține pe prima linie numărul natural N
, care reprezintă numărul de valori din secvență. Pe următoarele N
linii se află cele N
numere naturale din secvență, câte un număr pe o linie.
Date de ieșire
Fișierul de ieșire nrdiv.out
va conține N
linii. Pe linia i
va fi scris numărul de divizori ai celui de-al i
-lea număr din secvență (considerând ordinea din fișierul de intrare).
Restricții și precizări
1 ≤ N ≤ 50
1 ≤ numerele din secvență ≤ 10
13
Exemplu
nrdiv.in
3 13 1 24
nrdiv.out
2 1 8
Explicație
13
are doi divizori (1
şi 13
)
1
are un divizor (1
)
24
are 8
divizori (1
, 2
, 3
, 4
, 6
, 8
, 12
, 24
).
#include <bits/stdc++.h> using namespace std; ifstream cin("nrdiv.in"); ofstream cout("nrdiv.out"); unsigned long long n , x; int main() { cin >> n; for(int i = 1 ; i <= n ; i++) { cin >> x; unsigned long long cnt = 1 , d = 2; while(x > 1) { unsigned long long p = 0; while(x % d == 0) p++ , x /= d; if(p) cnt *= (p + 1); d++; if(d * d > x) d = x; } cout << cnt << '\n'; } return 0; }