Submission

Status:

PPPPP--P--

Subtask/Task Score:

60/100

Score: 60

User: qweqwe

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

Language: cpp

Time: 0.082 second

Submitted On: 2025-10-15 22:43:09

#include <bits/stdc++.h>
#define speed cin.tie(0)->sync_with_stdio(0)
#define ll long long
#define pii pair<int,int>
using namespace std;

int dp[10]={1,10,100,1000,10000,100000,1000000,10000000,100000000,1000000000};

bool isprime(int n){
	if (n<2) return false;
	for (int i=2;i<=sqrt(n);i++){
		if (n%i==0) return false;
	}return true;
}

int main(){
	speed;
	int m,n;cin >> m >> n;
	for (int i=0;i<m;i++){
		vector<int> v(n);
		int cnt=0;
		unordered_set<int> used;
		string s;cin >> s;
		for (int j=0;j<n;j++){
			v[j]=s[j]-'0';
		}sort(v.begin(),v.end());
		do{
			int t=0;
			for (int j=0;j<n;j++){
				t+=v[j]*dp[n-j-1];
			}
			if (!used.count(t)){
				bool prime=isprime(t);
				cnt+=prime;used.insert(t);
			}
		}while (next_permutation(v.begin(),v.end()));
		cout << cnt << "\n";
	}
	return 0;
}