Submission
Status:
PPPPP--P--
Subtask/Task Score:
60/100
Score: 60
User: tHeNyXs
Problemset: การเรียงสับเปลี่ยน
Language: cpp
Time: 0.056 second
Submitted On: 2026-03-06 15:23:03
#include <bits/stdc++.h>
using namespace std;
const int MAX = 1e7;
vector<bool> prime(MAX, true);
int n;
int cnt;
int freq[10];
int to_digit(string &a) {
int sum = 0;
for (char c : a)
sum = sum*10 + (c-'0');
return sum;
}
void findAns(string &num) {
if (num.size() == n) {
if (prime[to_digit(num)]) cnt++;
return;
}
for (int i = 0; i <= 9; ++i) {
if (freq[i]) {
freq[i]--;
num.push_back('0'+i);
findAns(num);
num.pop_back();
freq[i]++;
}
}
}
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
prime[0] = prime[1] = false;
for (int i = 2; 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--) {
string s;
cin >> s;
memset(freq,0,sizeof(freq));
for (char c : s)
freq[c-'0']++;
cnt = 0;
string cur="";
findAns(cur);
cout << cnt << '\n';
}
}