Submission

Status:
PPPPP--P--

Score: 60

User: Nagornz

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

Language: cpp

Time: 0.014 second

Submitted On: 2025-03-30 22:31:27

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

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

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

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

int32_t main(){
    checkprime();
    cin >> m >> n;
    vector <int> a(n);
    while (m--) {
        string s;
        cin >> s;
        int cnt = 0;
        for (int i = 0; i < n; i++) a[i] = s[i] - '0';
        sort(a.begin(), a.end());
        set <int> ans;
        do {
            int num = 0;
            for (int i = 0; i < n; i++) {
                num = num * 10 + a[i];
            }
            if (prime[num]) ans.insert(num);
        } while(next_permutation(a.begin(), a.end()));
        cout << ans.size() << "\n";
    }
}