Submission

Status:

PPPPP--P--

Subtask/Task Score:

60/100

Score: 60

User: muekwakungaroo

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

Language: cpp

Time: 0.932 second

Submitted On: 2026-03-05 10:46:54

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

void solve(){

}

int main(){
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    int n,m;
    cin>>m>>n;
    int ar[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]*1000;
    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;
            }
        }
    }
    
    while(m--){
        for(int i=0;i<n;i++){
            cin>>ch;
            if(ch!='-');
            ar[i]=ch-'0';
        }
        sort(ar,ar+n);
        int sum=0;
        int cnt=0;
        do{
            sum=0;
            string ss;
            for(int i=0;i<n;i++){
                // sum+=(ar[i]*mul[i]);
                ss=ss+to_string(ar[i]);
            }
            sum=stoi(ss);
            if(sum>=0 and isprime[sum]){
                cnt++;
                // cout<<sum<<' ';
            }
            // cout<<sum<<' ';

        }while(next_permutation(ar,ar+n));
        cout<<cnt<<'\n';
    }
    return 0;
}