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

Care este rezolvarea in C++ a problemei? (Rezolvare cu vectori)

Sub b,c,d??

Anexe:

Răspunsuri la întrebare

Răspuns de TibiNyte
0

Răspuns:

#include <iostream>

using namespace std;  

bool palindrom(int n)

{

if (n < 10) return true;

int cn = n;

int on = 0;

while (n) { on = on * 10 + n % 10;  n /= 10; }

if (cn == on) return true;

return false;

}

bool prim(int n)

{

if (n < 2 || (n % 2 == 0 && n != 2))

 return false;

for (int i = 2; i * i <= n; ++i) { if (n % i == 0) return false; }

return true;

}

int perfect(int n)

{

int s = 0, i;

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

 if (n % i == 0) s += i + n/i;

if (i * i == n) s += i;

if (s == 2 * n) return true;

return false;

}

struct problema {

int perfect;

int prim;

int palindrom;

int val;

}v[1001];

int main()

{

int n;

cin >> n;

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

{

 cin >> v[i].val;

 v[i].perfect = perfect(v[i].val);

 v[i].prim = prim(v[i].val);

 v[i].palindrom = palindrom(v[i].val);

}  

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

 if (v[i].prim) cout << v[i].val << ' ';

cout << '\n';

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

 if (v[i].palindrom) v[0].val++;

cout << v[0].val;

cout << '\n';

v[0].val = 0;

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

 if (v[i].perfect) v[0].val += v[i].val;

cout << v[0].val;

cout << '\n';

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

 if (v[i].palindrom && v[i].prim) cout<<v[i].val<<' ';

}

 

Explicație:

Anexe:

TibiNyte: Este cea mai eficienta metoda , dar nu stiu daca ai facut functii/structuri de date
Alte întrebări interesante