# USACO: Prime Cryptarithm

Problem Link : http://train.usaco.org/usacoprob2?a=dOLJGJAE7bv&S=crypt1

```
/*
TASK: crypt1
LANG: C++
*/

#include &lt;bits/stdc++.h&gt;

#define pii pair &lt;int,int&gt;
#define sc scanf
#define pf printf
#define Pi 2*acos(0.0)
#define ms(a,b) memset(a, b, sizeof(a))
#define pb(a) push_back(a)
#define MP make_pair
#define oo 1&lt;&lt;29
#define dd double
#define ll long long
#define EPS 10E-10
#define ff first
#define ss second
#define MAX 10000
#define CIN ios_base::sync_with_stdio(0); cin.tie(0)
#define SZ(a) (int)a.size()
#define getint(a) scanf(&quot;%d&quot;,&amp;a)
#define getint2(a,b) scanf(&quot;%d%d&quot;,&amp;a,&amp;b)
#define getint3(a,b,c) scanf(&quot;%d%d%d&quot;,&amp;a,&amp;b,&amp;c)
#define loop(i,n) for(int i=0;i&lt;n;i++)
#define TEST_CASE(t) for(int z=1;z&lt;=t;z++)
#define PRINT_CASE printf(&quot;Case %d: &quot;,z)
#define all(a) a.begin(),a.end()
#define intlim 2147483648
#define inf 1000000
#define rtintlim 46340
#define llim 9223372036854775808
#define rtllim 3037000499
#define ull unsigned long long
#define I int

using namespace std;
int ara[11];
bool mp[11];

int main()
{
freopen(&quot;crypt1.in&quot;,&quot;r&quot;,stdin);
freopen(&quot;crypt1.out&quot;,&quot;w&quot;,stdout);

int n;
cin&gt;&gt;n;
loop(i,n)
{
cin&gt;&gt;ara[i];
mp[ara[i]]=1;
}
int cnt=0;
loop(a,n)
loop(b,n)
loop(c,n)
{
int abc=ara[a]*100+ara[b]*10+ara;
if( abc/1000 !=0)
continue;
int p1,p2;
loop(d,n)
{
p1=abc*ara[d];
if( p1/1000 !=0)
continue;
int temp1=p1;
bool test=0;
while(temp1)
{
if(mp[temp1%10]==1)
{
temp1/=10;
}
else
{
test=1;
break;
}
}
if(test)
continue;
loop(e,n)
{
p2=abc*ara[e];
if( p2/1000 !=0)
continue;
int temp2=p2;
bool test=0;
while(temp2)
{
if(mp[temp2%10]==1)
{
temp2/=10;
}
else
{
test=1;
break;
}
}
if(test)
continue;
int ans=p1+p2*10;
while(ans)
{
if(mp[ans%10]==1)
ans/=10;
else
{
test=1;
break;
}
}
if(test==0)
cnt++;
}
}
}
cout&lt;&lt;cnt&lt;&lt;endl;
return 0;
}

```
0 0 votes
Article Rating
Subscribe
Notify of
0 Comments
Inline Feedbacks
View all comments