Submission

Status:

xPPPxxxxxx

Subtask/Task Score:

30/100

Score: 30

User: Kx

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

Language: cpp

Time: 0.004 second

Submitted On: 2026-03-18 14:55:09

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

int m, n;

int number(string s) {
    int num = 0;
    for(char c : s) {
        num = num * 10 + (c - '0');
    }
    return num;
}

int main() {
    cin >> m >> n;
    int mx = 1;
    while(n--) mx *= 10;

    vector<bool> sieve(mx + 4, true);
    sieve[0] = sieve[1] = false;

    for(int i = 2; i <= mx; ++i) {
        if(sieve[i]) {
            for(int j = i * i; j <= mx; j += i) {
                sieve[j] = false;
            }
        }
    }

    for(int i = 0; i < m; ++i) {
        string s; cin >> s;
        sort(s.begin(), s.end());
        int res = 0;
        do {
            if(sieve[number(s)]) res++;
        } while(next_permutation(s.begin(), s.end()));
        cout << res << '\n';
    }

    return 0;
}