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
*/