/*
ID:
PROG: crypt1
LANG: C++11
*/
#include<iostream>
#include<cstdio>
using namespace std;
int N;
int a[11] = {};
inline bool fit(int num, int n){
if (num == 0)
return true;
if (n == 3 && !(num >= 100 && num <= 999))
return false;
if (n == 4 && !(num >= 1000 && num <= 9999))
return false;
while (num != 0){
int t = num % 10;
num /= 10;
bool tag = false;
for (int i = 0; i < N; i ++){
if (t == a[i]){
tag = true;
break;
}
}
if(!tag)
return false;
}
return true;
}
int main()
{
freopen("crypt1.in","r", stdin);
freopen("crypt1.out", "w", stdout);
cin >> N;
for (int i = 0; i < N; i ++){
cin >> a[i];
}
int count = 0;
for (int k = 0; k < 5; k ++){
for (int l = 0; l < N; l ++){
b[k] = a[l];
}
}
for (int i1 = 0; i1 < N; i1 ++){
if (a[i1] == 0)
continue;
for (int i2 = 0; i2 < N; i2 ++){
for (int i3 = 0; i3 < N; i3 ++){
for (int j1 = 0; j1 < N; j1 ++){
if (a[j1] == 0)
continue;
for (int j2 = 0; j2 < N; j2 ++){
int t = a[i1] * 100 + a[i2] * 10 + a[i3];
int ans1 = t * a[j2];
if (!fit(ans1, 3))
continue;
int ans2 = t * a[j1];
if (!fit(ans2, 3))
continue;
int ans = ans1*10 + ans2;
if (fit(ans, 4))
count ++;
}
}
}
}
}
cout << count << endl;
return 0;
}
【USACO】Cryptarithm
最新推荐文章于 2020-03-22 21:26:35 发布