Submission
Status:
PPPPPPPPPP
Score: 100
User: admin
Problemset: การเรียงสับเปลี่ยน
Language: cpp
Time: 0.035 second
Submitted On: 2025-03-31 02:12:30
#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 custom_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 = custom_stoi(st); // Change here
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()
{
for (int i = 2; i < range[n]; i++)
if (chkp[i])
for (int j = 2 * i; j < range[n]; j = j + i) chkp[j] = false;
}
int main()
{
cin >> m >> n;
init_var();
for (int i = 0; i < m; i++)
{
sum = 0;
cin >> st;
think(0);
cout << sum << endl;
}
return 0;
}