432
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
nnumere 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