Submission

Status:

PPPPPxxPxx

Subtask/Task Score:

60/100

Score: 60

User: iij

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

Language: cpp

Time: 0.006 second

Submitted On: 2025-10-17 20:07:26

#include <bits/stdc++.h>

using namespace std;
bool isNotPrime[1000002];

int main() {
    vector<int> ans;
    int m, n;
    cin >> m >> n;
    unsigned maxN = stol(string(n, '9'));

    for (auto i = 2; i <= maxN+1; i++) {
        if (!isNotPrime[i]) {
            for (auto j = i*i; j <= maxN+1; 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";
}