Submission

Status:

PPPPPxxPxx

Subtask/Task Score:

60/100

Score: 60

User: PIP3_PP

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

Language: cpp

Time: 0.007 second

Submitted On: 2026-03-13 11:27:56

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

vector<bool> P(1000001,1);

void isPrime(){
	P[0] = P[1] = 0;
	
	for(int i = 2 ; i*i <= 1000000 ; i++){
		if(P[i]){
			for(int j = i*i ; j <= 1000000 ; j+=i){
				P[j] = 0;
			}
		}
	}
}

int permute(string &s, int l){
	if(l == s.size()){
		if(P[stoi(s)]){
			return 1;
		}
		return 0;
	}
	int cnt = 0;
	bool used[10] = {0};
	for(int i = l ; i < s.size() ; i++){
		
		if(used[s[i]-'0']) continue;
		used[s[i] -'0'] = 1;
		
		swap(s[i],s[l]);
		cnt += permute(s,l+1);
		swap(s[l],s[i]);
	}
	return cnt;
}


int main(){
	int m,n;
	string s;
	cin >> m >> n;
	isPrime();
	for(int i = 0 ; i < m ; i++){
		cin >> s;
		cout << permute(s,0) << "\n";
	}

	return 0;
}