Submission
Status:
----------
Subtask/Task Score:
0/100
Score: 0
User: tHeNyXs
Problemset: การเรียงสับเปลี่ยน
Language: cpp
Time: 0.038 second
Submitted On: 2026-03-06 15:29:09
#include <bits/stdc++.h>
using namespace std;
const int MAX = 10000000;
vector<bool> prime(MAX,true);
string s;
int n;
int ans;
void dfs(int mask, int num){
if(mask == (1<<n)-1){
if(prime[num]) ans++;
return;
}
for(int i=0;i<n;i++){
if(mask & (1<<i)) continue;
dfs(mask | (1<<i), num*10 + (s[i]-'0'));
}
}
int main(){
ios::sync_with_stdio(false);
cin.tie(nullptr);
prime[0]=prime[1]=false;
for(int i=2;i*i<MAX;i++)
if(prime[i])
for(int j=i*i;j<MAX;j+=i)
prime[j]=false;
int q;
cin >> q >> n;
while(q--){
cin >> s;
ans = 0;
dfs(0,0);
cout << ans << "\n";
}
}