气泡鱼
春芽
共回答了15个问题采纳率:100% 举报
#include
int total;
int num[10],a[10],n,has[10];
int judge(int number)
{
while(number)
{
if(!has[ number % 10 ]) return 0;
number /= 10;
}
return 1;
}
int check(int a,int b)
{
if(a < 100) return 0;
if(b < 10) return 0;
if(!judge(a * num[4]) || !judge(a * num[3]) || !judge(a*b)) return 0;
if(a * num[4] < 1000) return 0;
if(a * num[4] >= 10000) return 0;
if(a * num[3] < 1000) return 0;
if(a * num[3] >= 10000) return 0;
if(a * b < 10000) return 0;
if(a * b >= 100000) return 0;
return 1;
}
void dfs(int dep)
{
if(dep == 5)
{
int a = num[0] * 100 + num[1] * 10 + num[2];
int b = num[3] * 10 + num[4];
if(check(a,b))
{
//printf("%6dn*%5dn-------n%6dn %dn------n%6dn",a,b,a*num[4],a*num[3],a*b);
total ++;
}
return ;
}
int i;
for(i=0;i{
num[dep] = a[i];
dfs(dep+1);
}
}
int main()
{
freopen("crypt.in","r",stdin);
freopen("crypt.out","w",stdout);
int i;
while(~scanf("%d",&n))
{
total = 0;
for(i=0;i<10;i++) has[i] = 0;
for(i=0;i{
scanf("%d",&a[i]);
has[a[i]] = 1;
}
dfs(0);
printf("%dn",total);
}
return 0;
}
1年前
4