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;
}