原题目:
题目大意:
解题思路:
代码:
ll ans1 = 0, ans2 = 0,ans3=0,flag=0;
void serch1(ll x,ll tard,ll usedd,ll dep){
ll i, j, k;
if (dep == NN) {
k = 0; j = 1;
for (i = 1; i <= NN; i++) {
k = k + Dig[i]*j;
j = j * 10;
}
// printf("%lld\n", k);
if (is_prime(k)) {
if (Map4[k] == 0) {
Map4[k] = 1;
ans3 = ans3 + k;
ans2++;
}
}
return;
}
if (x == 0) {
k = NN-1;
}
else {
k = NN;
}
if (dep < tard) {
for (i = dep+1; i <= k; i++) {
if (Dig[i] != -1) {
continue;
}
if (x % 2 == 0 && i == 1) {
continue;
}
Dig[i] = x;
serch1(x, tard, usedd + 1, dep + 1);
Dig[i] = -1;
}
}
else {
for (i = 1; i <= NN; i++) {
if (Dig[i] == -1) {
for (j = 0; j <= 9; j++) {
if (j == x)continue;
if (j == 0 && i == NN) {
continue;
}
if (i == 1 && j % 2 == 0) {
continue;
}
Dig[i] = j;
serch1(x, tard, usedd, dep + 1);
Dig[i] = -1;
}
}
}
}
}
void solve() {
ll i, j, k, p, q, r, t;
double a1, a2 = 0;
NN = 10;
double a = 0, b = 0;
for (i = 0; i <= 9; i++) {
ans2 = 0; ans3 = 0;
for (j = NN-1; j >= 1; j--) {
memset(Dig, -1, sizeof(Dig));
serch1(i, j,0,0);
if (ans2 != 0) {
printf("%lld %lld\n", ans2,ans3);
ans1 = ans1 + ans3;
break;
}
}
}
printf("%lld\n", ans1);
}