Submission

Status:

PPPPPTTPTT

Subtask/Task Score:

60/100

Score: 60

User: muekwakungaroo

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

Language: cpp

Time: 1.098 second

Submitted On: 2026-03-05 11:38:33

/*
TASK: permutation
LANG: C++
AUTHOR: YourName YourLastName
CENTER: SUT
*/
#include<bits/stdc++.h>
using namespace std;
int n;
void solve(vector<bool>& isprime){
    vector<int> ar;  
    string s;
    cin>>s;
    bool chk=false;
    for(int i=0;i<s.size();i++){
        ar.emplace_back(s[i]-'0');
    }
    if(s.size()!=n){
            // cout<<'a';
            for(int i=1;i>=0;i++){
    
            }
        }
    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(sum>=0 and isprime[sum]){
            cnt++;
        }
    }while(next_permutation(ar.begin(),ar.end()));
    cout<<cnt<<'\n';
}
int main(){
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    int 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+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;
            }
        }
    }
      
    while(m--){
        solve(isprime);
    }
    return 0;
}