我出的题T560149缺数据,我上传不了,但可以给数据生成代码和正解
数据生成代码(python):
def ran(data):
return [i for n,i in enumerate(data) if i not in data[:n]]
import random
a = []
n = int(input())
for i in range(0,n,1):
m = int(random.randint(1,7))
s = random.sample('12345*67890',m)
random.shuffle(s)
j = 1
while s[0] == ' ' or s[0] == '*':
t = s[0]
s[0] = s[j]
s[j] = t
j += 1
a.append(s)
b = ran(a)
random.shuffle(b)
s = input()#读入格式:文件名.in
f = open(s,'w')
f.write(f'{len(b)}\n')
for i in range(0,len(b),1):
for j in range(0,len(b[i]),1):
f.write(f'{b[i][j]}')
f.write('\n')
正解(c++):
#include <iostream>
using namespace std;
string s;
bool flag;
bool f[10000005];
void get(){
f[0] = f[1] = true;
for(int i = 2;i <= 10000000;i++){
if(!f[i]){
for(int j = i + i;j <= 10000000;j += i){
f[j] = true;
}
}
}
}
void dfs(int k){
if(k == s.size()){
if(!f[stoi(s)]) flag = true;
return;
}
if(s[k] == '*'){
for(char ch = '0';ch <= '9';ch++){
s[k] = ch;
dfs(k + 1);
if(flag) return;
s[k] = '*';
}
}else dfs(k + 1);
}
int main(){
string s1,s2;
cin >> s1;//读入格式:文件名
s2 = s1;
s1 += ".in";
s2 += ".out";
freopen(s1.c_str(),"r",stdin);
freopen(s2.c_str(),"w",stdout);
get();
int t;
cin >> t;
while(t--){
cin >> s;
flag = false;
dfs(0);
cout << (flag ? s : "-1") << '\n';
}
return 0;
}