Submission
Status:
----------
Subtask/Task Score:
0/100
Score: 0
User: NANO..
Problemset: การเรียงสับเปลี่ยน
Language: cpp
Time: 0.040 second
Submitted On: 2026-10-15 22:27:22
#include <bits/stdc++.h>
using namespace std;
const int N=1e6;
bool prime[N+1];
// vector<bool> prime(true,N);
void sieve(){
prime[0]=false;
prime[1]=false;
for (int i = 2; i <= sqrt(N); i++)
{
if(prime[i]){
for (int j = i*i; j <= N; j+=i)
{
prime[j]=false;
}
}
}
}
int main()
{
ios::sync_with_stdio(0);cin.tie(0);
memset(prime,true,sizeof(prime));
sieve();
// for (int i = 0; i < 200; i++)
// {
// if(prime[i]) cout << i << " ";
// cout << i << " : " << prime[i] << '\n';
// }
// cout << 'A';
// return 0;
int n,m;
cin >> n >> m;
vector<string> v(n);
for(auto& i:v) cin >> i;
for(auto i:v){
int cnt=0;
string curr="";
for (int j = 0; j < m; j++)
{
curr+=char(j+'0');
}
do
{
string sum="";
for(auto j:curr){
sum+=i[j-'0'];
}
// cout << sum << '\n';
if(prime[stoi(sum)]) cnt++;
} while (next_permutation(curr.begin(),curr.end()));
cout << cnt << '\n';
// cout << "\n======\n";
}
}
/*
a*b^c+d*e^f
2
1 0
2 0
*/