USACO_Prime Cryptarithm

/*

ID: rongkan1

PROG: crypt1

LANG: C++

*/

#include <iostream>

#include <fstream> //若不引入,会导致报错 

using namespace std;

int N;

int tem[5];

int n[10];

int all=0;

int in(int a)

{

    int i;

    for(i=0;i<N;i++)

    {

        if(n[i]==a)return 1;

    }

    return 0;

}

int check(int a,int t){

     int count=0;

     while(a){

              count++;

         if(count>t || in(a%10)==0)return 0;

         a=a/10;

     }

     return 1;

}



void re(int count){

     if(count==5)

     {

         int n1=tem[0]*100+tem[1]*10+tem[2];

         int n2=tem[3]*10+tem[4];

         int n3=tem[4]*n1;

         

         int n4=tem[3]*n1;

         int n5=n1*n2;

         if(check(n3,3) && check(n4,3) && check(n5,4))all++;

         return;

     }

     int i=0;

     for(;i<N;i++)

     {

         tem[count]=n[i];

         re(count+1); 

     }

         

}

int main()

{

    ofstream fout ("crypt1.out");

    ifstream fin ("crypt1.in");

    

    fin>>N;

    int i;

    for(i=0;i<N;i++){

        fin>>n[i];

    }

    

    re(0);

    fout<<all<<endl;

    

}

你可能感兴趣的:(USACO)