Submission
Status:
PPPPPxxPxx
Subtask/Task Score:
60/100
Score: 60
User: anak
Problemset: การเรียงสับเปลี่ยน
Language: cpp
Time: 0.007 second
Submitted On: 2026-04-01 15:54:27
#include <iostream>
#include <string>
#include <algorithm>
#include <bitset>
using namespace std;
bitset<1000005> isPrime;
using namespace std;
typedef long long ll;
#define all(x) (x).begin(), (x).end()
void sieve() {
isPrime.set();
isPrime[0] = false;
isPrime[1] = false;
for(int i=2;i<1000000;i++) {
if(isPrime[i]) {
for(int j=2*i;j<1000000;j+=i) {
isPrime[j] = false;
}
}
}
}
int cnt_prime(string s) {
sort(all(s));
int ans = 0;
do {
int num = stoi(s);
if(isPrime[num]) ans++;
} while(next_permutation(all(s)));
return ans;
}
int main()
{
ios_base::sync_with_stdio(0);
cin.tie(0);
int n,m;
cin >> m >> n;
sieve();
for(int i=0;i<m;i++) {
string s;
cin >> s;
cout << cnt_prime(s) << '\n';
}
}