218
Gigel a primit spre păstrare un set de n
cutii de greutăţi nu neapărat distincte. El a cântărit cutiile şi pentru fiecare greutate distinctă a notat pe o foaie, în ordine crescătoare a greutăţilor, numărul de cutii cu greutatea respectivă..
Din valorile 1 1 0 1
se obţine numărul de control 31, care este număr prim.
#include <bits/stdc++.h> using namespace std; ifstream cin("control2.in"); ofstream cout("control2.out"); 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 main() { int n; cin >> n; int f[200]={0}; int a[100]; int tmp; int c[35]; for(int i = 0 ; i < n ; ++i) { cin >> tmp; f[tmp]++; } int p = 0; for(int i = 1 ; i <= 200 ; ++i) { if(f[i]!=0) { a[p]=f[i]; p++; } } while(p%3!=0) p--; int p1=0; for(int i = 0 ; i < p ; i+=3) { if(a[i]%2==0 && a[i+1]%2==0 && a[i+2]%2==0) { c[p1]=1; p1++; } else if(a[i]%2==1 && a[i+1]%2==1 && a[i+2]%2==1) { c[p1]=1; p1++; } else { c[p1]=0; p1++; } } int g[3]={0}; for(int i = 0 ; i < p1 ; ++i) { g[c[i]]++; } int nr=0; for(int i = 1 ; i >= 0 ; --i) { nr*=10; nr+=g[i]; } if(prim(nr)) cout << nr << endl << 1; else cout << nr << endl << 0; return 0; }
Comentarii