Submission
Status:
PPPPPxxPxx
Subtask/Task Score:
60/100
Score: 60
User: Kx
Problemset: การเรียงสับเปลี่ยน
Language: cpp
Time: 0.004 second
Submitted On: 2026-03-18 14:59:30
#include <bits/stdc++.h>
using namespace std;
int m, n;
int number(string s) {
int num = 0;
for(char c : s) {
num = num * 10 + (c - '0');
}
return num;
}
int main() {
cin.tie(nullptr);
ios::sync_with_stdio(false);
cin >> m >> n;
int mx = 1;
while(n--) mx *= 10;
vector<bool> sieve(mx + 4, true);
sieve[0] = sieve[1] = false;
for(int i = 2; i * i <= mx; ++i) {
if(sieve[i]) {
for(int j = i * i; j <= mx; j += i) {
sieve[j] = false;
}
}
}
for(int i = 0; i < m; ++i) {
string s; cin >> s;
sort(s.begin(), s.end());
int res = 0;
do {
if(sieve[number(s)]) res++;
} while(next_permutation(s.begin(), s.end()));
cout << res << '\n';
}
return 0;
}