Cerința
Se dau n
numere naturale. Aflaţi câte dintre ele sunt palindrom prim norocoase. Un număr este palindrom prim norocos dacă este palindrom (egal cu răsturnatul său, de exemplu 121
), prim (are exact 2
divizori, de exemplu 3
) şi norocos (pătratul numărului se poate scrie ca sumă de numere consecutive, exemplu 3
. 3 * 3 = 9 = 2 + 3 + 4
).
Date de intrare
Se va citi de la tastatura numărul n
si n
numere naturale separate prin spații.
Date de ieșire
Se va afisa numarul de numere care respecta conditiile.
Restricții și precizări
1 ≤ n ≤ 1000
- cele
n
numere vor fi mai mici decât2.000.000.000
.
Exemplu
Intrare
6 2 3 5 7 11 24
Ieșire
4
Explicație
Sunt 6
numere, dintre care doar 4
respectă condițiile: 3
, 5
, 7
şi 11
.
#include <bits/stdc++.h> using namespace std; int prim(int n) { int cnt=0; for(int i = 1 ; i * i <= n ; ++i) { if(n%i==0) cnt+=2; if(i*i==n) cnt--; } if(cnt==2) return 1; else return 0; } int pal(int n) { int ogl=0; int cn=n; while(n) { ogl=ogl*10+n%10; n/=10; } if(ogl==cn) return 1; else return 0; } int main() { int n; cin >> n; int a[1000]; int cnt=0; for(int i = 0 ; i < n ; ++i) cin >> a[i]; for(int i = 0 ; i < n ; ++i) { if(pal(a[i])&&prim(a[i])&&a[i]%2==1) cnt++; } cout << cnt; return 0; }