Submission

Status:
PPPPPxxPxx

Score: 60

User: Nagornz

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

Language: cpp

Time: 0.007 second

Submitted On: 2025-03-30 22:47:14

/*
TASK: permutation
LANG: C++
AUTHOR: Nagorn Phongphasura
CENTER: SUT
*/

#include <bits/stdc++.h>
using namespace std;

int m, n;
vector <bool> prime(1000005, true);

void checkprime(){
    prime[0] = prime[1] = false;
    for (int i = 2; i <= 1000; i++) {
        if (prime[i]) {
            for (int j = i * i; j <= 1000000; j += i) {
                prime[j] = false;
            }
        }
    }
}

int main(){
    checkprime();
    cin >> m >> n;
    while (m--) {
        int cnt = 0;
        string s;
        cin >> s;
        vector <int> a;
        for (auto c : s) a.emplace_back(c - '0');
        sort(a.begin(), a.end());
        int curr = 0;
        do {
            int num = 0;
            for (auto e : a) num = num * 10 + e;
            if (prime[num] && num != curr) cnt++, curr = num;
        } while(next_permutation(a.begin(), a.end()));
        cout << cnt << "\n";
    }
}