Care este rezolvarea in C++ a problemei? (Rezolvare cu vectori)
Sub b,c,d??
Răspunsuri la întrebare
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: