由题意和数据范围就知道这道题直接暴力枚举就可以了.
#include<iostream>
#include<cstdio>
using namespace std;
int n,ans;
bool a[15];
int f(int x)
{
int t=0;
while(x)
{
if(!a[x%10]) return 0;
x=x/10;
t++;
}
return 1;
}
bool check(int x,int y)
{
int x1=x*(y%10),y1=x*(y/10),xy=x*y;
if(x1>999||y1>999||xy>9999) return 0;
if(f(x)&&f(y)&&f(x1)&&f(y1)&&f(xy)) return 1;
else return 0;
}
int main()
{
cin>>n;
for(int i=1;i<=n;i++)
{
int x;
cin>>x;
a[x]=1;
}
for(int i=100;i<=999;i++)
{
if(!f(i)) continue;
for(int j=10;j<=99;j++)
{
if(check(i,j)==1)
{
ans++;
}
}
}
cout<<ans;
return 0;
}