Submission

Status:

--------TT

Subtask/Task Score:

0/100

Score: 0

User: wtpza

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

Language: cpp

Time: 1.097 second

Submitted On: 2026-03-13 11:31:41

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

int n,m;
vector<int> prime;

bool isprime(int a){
    if(a<=1)return false;
    if(a%2==0)return false;
    if(a==2)return true;
    for(int i = 3 ; i*i <= a ;i+=2){
        if(a%i==0)return false;
    }
    prime.push_back(a);
    return true;
}

int permute(vector<int> z,vector<int> com,vector<int> usednum,vector<bool> usedint){
    int counter = 0;
    if(com.size() == m){
        int toreal=0;
        for(int x:com){
            toreal*=10;
            toreal+=x;
        }
        if(find(usednum.begin(),usednum.end(),toreal) != usednum.end()){
            return 0;
        }
        else {
            usednum.push_back(toreal);
            if(find(prime.begin(),prime.end(),toreal) != prime.end()) return 1;
            if(isprime(toreal))return 1;
            return 0;
        }
    }
    for(int i = 0 ; i < m;i++){
        if(!usedint[i]){
            com.push_back(z[i]);
            usedint[i] = true;
            counter+=permute(z,com,usednum,usedint);
            usedint[i] = false;
            com.pop_back();
        }
    }
    return counter;
}

int main(){
    cin >> n >> m;
    prime.push_back(2);
    for(int i = 0 ; i < n;i++){
        string jj;
        cin >> jj;
        vector<int> wow;
        vector<int> gg;
        for(int j = 0 ; j < jj.length();j++){
            int lol = jj[j]-'0';
            wow.push_back(lol);
        }
        vector<bool> usedint(jj.length(),false);
        vector<int>usednum;
        cout << permute(wow,gg,usednum,usedint) << "\n";
    } 
}