Submission

Status:

-----xx-xx

Subtask/Task Score:

0/100

Score: 0

User: muekwakungaroo

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

Language: cpp

Time: 0.007 second

Submitted On: 2026-03-05 10:11:44

#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 s=pow(10,n);
    int mul[n];
    mul[n-1]=1;
    for(int i=n-2;i>=0;i--){
        mul[i]=mul[i+1]*10;
    }
    vector<bool> isprime(mul[0]*10,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;
            ar[i]=ch-'0';
        }
        // sort(ar,ar+n);
        int sum=0;
        int cnt=0;
        do{
            sum=0;
            for(int i=0;i<n;i++){
                sum+=(ar[i]*mul[i]);
            }
            if(isprime[sum]){
                cnt++;
                // cout<<sum<<' ';
            }
            // cout<<sum<<' ';
        }while(next_permutation(ar,ar+n));
        cout<<cnt<<'\n';
    }
    return 0;
}