294
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