Submission

Status:

PPPPPxxPxx

Subtask/Task Score:

60/100

Score: 60

User: PIXIX

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

Language: cpp

Time: 0.005 second

Submitted On: 2026-03-19 19:14:45

#include <algorithm>
#include <cmath>
#include <ios>
#include <iostream>
#include <string>
#include <type_traits>
#include <vector>
using namespace std;
const int MAXCAP = 1000000;
vector<bool> primecheck(MAXCAP+5,true);

void set_prime(){
    int sq = (int) sqrt(MAXCAP);
    primecheck[0] = false;
    primecheck[1] = false;
    for(int i = 4; i <= MAXCAP;i+=2)primecheck[i]=false;
    for(int i = 3;i <= sq;i+=2){
        if(primecheck[i]) {
            for(int j = i*i; j <= MAXCAP;j+=2 * i){
                primecheck[j] = false;
            }
        }
    }
    //for(int i = 0 ; i <= 100;i++) if(primecheck[i]) cout << i << " ";
}

void premu(vector<string> nums){
    for(string &str : nums){
        int c = 0;
        sort(str.begin(),str.end());
        do{
            if(primecheck[(int) stoi(str)]){
                c++;
            }
        }while(next_permutation(str.begin(),str.end()));
        cout << c << '\n';
    }
}

int main (int argc, char *argv[]) {
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);

    int m,n; cin>>m>>n;
    vector<string> vec(m);

    for(int i = 0;i < m;i++){
        cin>>vec[i];
    }
    set_prime();
    premu(vec);

    return 0;
}