记录编号 |
458403 |
评测结果 |
AAAAAAA |
题目名称 |
牛式 |
最终得分 |
100 |
用户昵称 |
JustWB |
是否通过 |
通过 |
代码语言 |
C++ |
运行时间 |
0.004 s |
提交时间 |
2017-10-11 10:11:11 |
内存使用 |
0.31 MiB |
显示代码纯文本
#include<cstdio>
#include<vector>
#include<iostream>
#include<algorithm>
using namespace std;
void get_numa(int now);
void get_numb(int now);
int n,ans;
int N[10];
bool j[10],J[10];
vector<int> up;
vector<int> down;
int main()
{
freopen("crypt1.in","r",stdin);
freopen("crypt1.out","w",stdout);
cin>>n;
for(int i=1;i<=n;i++)cin>>N[i],J[N[i]]=true;
get_numa(0);get_numb(0);
for(int i=0;i<up.size();i++)
{
for(int j=0;j<down.size();j++)
{
int a=down[j]%10,b=down[j]/10;
int ta=a*up[i],tb=b*up[i],tc=up[i]*down[j];
if(tc<10000&&tb<1000&&ta<1000)
{
bool tmp=false;
while(ta)
{
if(!J[ta%10])
{
tmp=true;
break;
}
ta/=10;
}
if(tmp)continue;
while(tb)
{
if(!J[tb%10])
{
tmp=true;
break;
}
tb/=10;
}
if(tmp)continue;
while(tc)
{
if(!J[tc%10])
{
tmp=true;
break;
}
tc/=10;
}
if(tmp)continue;
ans++;
}
}
}
printf("%d\n",ans);
return 0;
}
void get_numb(int now)
{
if(now>10)down.push_back(now);
else
{
for(int i=1;i<=n;i++)
{
if(!j[i])
{
get_numb(10*now+N[i]);
}
}
}
}
void get_numa(int now)
{
if(now>100)up.push_back(now);
else
{
for(int i=1;i<=n;i++)
{
if(!j[i])
{
get_numa(10*now+N[i]);
}
}
}
}