306
Cerința
Se dau n
numere naturale. Determinați suma divizorilor oglinditelor celor n
numere.
Date de intrare
Programul citește de la tastatură numărul n
, iar apoi n
numere naturale, separate prin spații.
Date de ieșire
Programul va afișa pe ecran numărul S
, reprezentând suma cerută.
Restricții și precizări
1 ≤ n ≤ 1000
- cele
n
numere citite vor fi mai mici decât1.000.000.000
Exemplu
Intrare
3 12 23 30
Ieșire
99
Explicație
Oglinditul lui 12
este 21
; suma divizorilor săi este 32
. Oglinditul lui 23
este 32
; suma divizorilor săi este 63
. Oglinditul lui 30
este 3
; suma divizorilor săi este 4
.
#include <bits/stdc++.h> using namespace std; int main() { int n; cin >> n; unsigned long long suma = 0; for(int i = 1; i <= n; ++i){ int x; cin >> x; int ogl = 0; while(x){ ogl = ogl * 10 + x % 10; x/=10; } for(int d = 1; d * d <= ogl; ++d){ if(ogl % d == 0) suma += d, suma += ogl/d; if(d * d == ogl) suma -= d; } } cout << suma; return 0; }
Comentarii