过得了样例啊……
#include<bits/stdc++.h>
using namespace std;
int l[1200005], len = 0, k, m, le, lenn = 1;
int a[500005], tmp[500005];//a为答案数组,tmp为转化临时数组,l为求集合数组
void dealit(int x){ //将一位数以上的(例如x=15) 转化为a[1]=1 a[2]=5
le = 500000;
while(x / 10 != 0){
tmp[le--] = x % 10;
x = x / 10;
}
tmp[le--] = x;
for(int i = le+1; i <= 500000; i++){
a[len] = lenn++;
a[len++] = tmp[i];
}
}
int main(){
cin >> k >> m;
int kk = k;
l[1] = 1;
for(int i = 1; i <= 4*k+1 && kk; i++){
if(l[i] != 0){
l[2*i + 1] = 1;
l[4*i + 5] = 1;
cout << i;
dealit(i);
kk--;
}
}
cout << endl;
for(int i = 0; i < len; i++){
if(a[i+1] > a[i]) a[i] = -1;
}
for(int i = 0; i < len; i++)
if(a[i] != -1) cout << a[i];
return 0;
}