Informatică, întrebare adresată de tudorcristianmoyadct, 8 ani în urmă

Nu reusesc sa fac 100 de puncte la SumDivOgl :
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ât 1.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.

Codul meu :
#include
using namespace std;

long long n,x,s;
int main()
{
cin>>n;
for(int i=0;i {
cin>>x;
if(x>=10)
{
long long inv=0;
while(x)
{
inv=inv*10+x%10;
x/=10;
}
x=inv;
}
///cout< int d;
for(d=1;d*d {
if(x%d==0)
{
s+=d;
if(x % (x/d)==0)
s+=(x/d);
}
}
if(d*d==x)
s+=d;
}
cout< return 0;
}

Răspunsuri la întrebare

Răspuns de StefanGroparu21
0

Răspuns:

#include<iostream>

using namespace std;

int main()

{

long long s=0;

int ogl,n,v[1001],i,j;

cin>>n;

for(i=1;i<=n;i++)

{

   cin>>v[i];

   ogl=0;

   while(v[i]!=0)

   {

       ogl=ogl*10+v[i]%10;

       v[i]=v[i]/10;

   }

   for(j=1;j*j<=ogl;j++)

   {

       if(j*j==ogl)

           s=s+j;

       else if(ogl%j==0 && j*j!=ogl)

           s=s+j+ogl/j;

   }

}

cout<<s;

return 0;

}

Explicație:


Alexia5410: StefanGroparu21 Mă poți ajuta la ultimul exercițiu postat de pe contul meu legat de informatică? Te rog!
Alte întrebări interesante