Submission
Status:
Compilation Error
Score: 0
User: admin
Problemset: การเรียงสับเปลี่ยน
Language: cpp
Time: 0.000 second
Submitted On: 2025-03-31 02:11:56
#include <iostream>
#include <string>
#include <vector>
using namespace std;
vector <bool> chkp(10000000,true);
char st[8];
int n,m,sum,range[9]={1,10,100,1000,10000,100000,1000000,10000000};
int stoi(string st)
{
int digit=1,sum=0;
for (int i=st.length()-1;i>=0;i--)
{
sum+=digit*(st[i]-'0');
digit*=10;
}
return sum;
}
void think(int deep)
{
char temp;
int i,j,p;
vector<bool> chk(255,true);
if (deep==n)
{
p = stoi(st);
if (chkp[p]) sum++;
}
else
{
for (i=deep;i<n;i++)
{
if (chk[st[deep]]) think(deep+1);
temp=st[deep];
chk[temp]=false;
for (j=deep;j<n-1;j++) st[j]=st[j+1];
st[n-1]=temp;
}
}
}
void init_var()
{
int i,j;
for (i=2;i<range[n];i++)
if (chkp[i])
for (j=2*i;j<range[n];j=j+i) chkp[j]=false;
}
int main()
{
init_var();
cin >> m >> n;
init_var();
for (int i=0;i<m;i++)
{
sum = 0;
cin >> st;
think(0);
cout << sum << endl;
}
return 0;
}