Submission

Status:

PPPPPxxPxx

Subtask/Task Score:

60/100

Score: 60

User: muekwakungaroo

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

Language: cpp

Time: 0.009 second

Submitted On: 2026-03-05 11:17:55

/*
TASK: permutation
LANG: C++
AUTHOR: YourName YourLastName
CENTER: SUT
*/
#include<bits/stdc++.h>
using namespace std;
int main(){
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    int n,m;
    cin>>m>>n;
    char ch;
    int mul[n];
    mul[n-1]=1;
    for(int i=n-2;i>=0;i--){
        mul[i]=mul[i+1]*10;
    }
    int s=mul[0]*10;
    vector<bool> isprime(s,true);
    isprime[1]=false;
    isprime[0]=false;
    for(int i=2;i<=s/i;i++){
        for(int j=i*i;j<s;j+=i){
            if(isprime[j]==true){
                isprime[j]=false;
            }
        }
    }
    vector<int> ar;    
    while(m--){
        string s;
        ar.clear();
        cin>>s;
        bool chk=false;
        for(int i=0;i<s.size();i++){
            ar.emplace_back(s[i]-'0');
        }
        

        sort(ar.begin(),ar.end());
        int sum=0;
        int cnt=0;
        do{
            sum=0;
            string ss;
            for(auto&i:ar){
                ss=ss+to_string(i);
            }
            sum=stoi(ss);
            if(isprime[sum]){
                cnt++;
            }
        }while(next_permutation(ar.begin(),ar.end()));
        cout<<cnt<<'\n';
    }
    return 0;
}