https://www.acwing.com/problem/content/description/1352/
#include<bits/stdc++.h>
using namespace std;
unordered_map<int,int>mp;
int n,x,cnt;
bool check(int x)
{
while(x)
{
if(!mp[x%10]) return false;
x/=10;
}
return true;
}
void solve(int m)
{
if(!check(m)) return ;
for(int i=11;i<=99;i++)
{
if(m%i!=0||!check(i)) continue;
else
{
int a=m/i;
string s1=to_string(a);
string s3=to_string(a*(i%10));
string s4=to_string(a*(i/10));
if(s1.size()!=3) continue;//不是三位数
if(s3.size()!=3) continue;//不是三位数
if(s4.size()!=3) continue;//不是三位数
if(check(a)&&check(a*(i%10))&&check(a*(i/10))) cnt++;
}
}
}
int main(void)
{
cin>>n;
for(int i=0;i<n;i++) cin>>x,mp[x]++;
for(int i=1111;i<=9999;i++) solve(i);
cout<<cnt<<endl;
return 0;
}