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; }
转载请注明出处:http://www.cnblogs.com/stonehat/