USACO:Prime Cryptarithm

枚举没什么好说的

/*
ID: Jang Lawrence
PROG: crypt1
LANG: C++
*/
#include<iostream>
#include<cstring>
#include<cstdio>
#include<algorithm>
using namespace std;
int  p[5];
int b,c,d,e,f;
int ans=0;
bool in[10];
bool is()
{
    int x=b*100+c*10+d,y=e*10+f;
    if(e*x>=1000) return 0;
    if(f*x>=1000) return 0;
    int t=e*x;
    while(t)
    {
        if(!in[t%10]) return 0;
        t/=10;
    }
    t=f*x;
    while(t)
    {
        if(!in[t%10]) return 0;
        t/=10;
    }
    t=y*x;
    while(t)
    {
        if(!in[t%10]) return 0;
        t/=10;
    }
    return 1;
}
int main()
{
    #ifndef  DEBUG
  freopen("crypt1.in","r",stdin);
  freopen("crypt1.out","w",stdout);
  #endif
  int n;
  int a[11];
  scanf("%d",&n);
  for(int i=1;i<=n;++i)
  {scanf("%d",a+i); in[a[i]]=1;}
  for(int i=1;i<=n;++i){
      b=a[i];
  for(int j=1;j<=n;++j)
  {
      c=a[j];
      for(int k=1;k<=n;++k)
      {
          d=a[k];
          for(int s=1;s<=n;++s)
          {
              e=a[s];
              for(int ii=1;ii<=n;++ii)
              {f=a[ii];
              if(is())  ans++;
              }
          }
      }
  }
  }
  printf("%d\n",ans);
  return 0;
}


你可能感兴趣的:(USACO:Prime Cryptarithm)