记录编号 458403 评测结果 AAAAAAA
题目名称 牛式 最终得分 100
用户昵称 GravatarJustWB 是否通过 通过
代码语言 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]);
			}
		}
	}
}