Submission

Status:

PPPPPxxPxx

Subtask/Task Score:

60/100

Score: 60

User: iij

Problemset: การเรียงสับเปลี่ยน

Language: cpp

Time: 0.017 second

Submitted On: 2025-10-17 21:59:55

#include <bits/stdc++.h>

using namespace std;
bool isNotPrime[9999999];
constexpr unsigned maxN = 9000000;

int main() {
    vector<int> ans;
    int m, n;
    cin >> m >> n;

    isNotPrime[0] = isNotPrime[1] = 1;
    for (unsigned i = 2; i*i <= maxN; i++) {
        if (!isNotPrime[i]) {
            for (unsigned j = i*i; j <= maxN; j+=i) {
                isNotPrime[j] = 1;
            }
        }
    }

    while(m--) {
        unsigned c = 0;
        string s;
        cin >> s;

        sort(s.begin(), s.end());

        do {
            if (!isNotPrime[stoi(s)]) {
                c++;
            }
        } while (next_permutation(s.begin(), s.end()));
        
        ans.emplace_back(c);
    }

    for (auto i : ans) cout << i << "\n";
}