Submission details
Task:Alkuluvut
Sender:ArktinenKarpalo
Submission time:2025-09-27 11:28:52 +0300
Language:C++ (C++17)
Status:READY
Result:100
Feedback
groupverdictscore
#1ACCEPTED17
#2ACCEPTED41
#3ACCEPTED42
Test results
testverdicttimegroup
#1ACCEPTED0.01 s1, 2, 3details
#2ACCEPTED0.08 s2, 3details
#3ACCEPTED0.79 s3details

Code

#include <bits/stdc++.h>

typedef long long ll;

using namespace std;

bool isPrime(ll a) {
  if (a == 1)
    return false;
  for (ll i = 2; i * i <= a; i++) {
    if (a % i == 0)
      return false;
  }
  return true;
}

bool isOk(string s) {
  if (s[0] == '0')
    return false;
  return isPrime(atoll(s.c_str()));
}
std::random_device rd;
std::mt19937 g(rd());

string solve(string luvut) {
  int tries = 1000;
  while (tries--) {
    string luku;
    for (auto u : luvut)
      luku.push_back(u);
    int lol = max(0, max(1, rand() % 12) - (int)luku.size());
    for (int i = 0; i < lol; i++) {
      luku.push_back(luvut[rand() % luvut.size()]);
    }
    for (int i = 0; i < 10; i++) {
      std::shuffle(luvut.begin(), luvut.end(), g);
      if (isOk(luku)) {
        return "YES\n" + luku;
      }
    }
  }
  return "NO";
}

int main() {
  int t;
  cin >> t;
  while (t--) {
    int k;
    cin >> k;
    string luvut(k, '0');
    for (int i = 0; i < k; i++)
      cin >> luvut[i];
    cout << solve(luvut) << "\n";
  }
}

Test details

Test 1

Group: 1, 2, 3

Verdict: ACCEPTED

input
10
1
0
1
1
...

correct output
NO
YES
11
YES
2
...

user output
NO
YES
11
YES
2
...

Test 2

Group: 2, 3

Verdict: ACCEPTED

input
175
1
0
1
1
...

correct output
NO
YES
11
YES
2
...

user output
NO
YES
11
YES
2
...

Test 3

Group: 3

Verdict: ACCEPTED

input
848
4
0 1 2 3
4
0 1 2 4
...

correct output
YES
10223
YES
4021
YES
...

user output
YES
120331201
YES
4021
YES
...