刚开始把 pw 数组只预处理了 1000 位过了,然后经过不断的测试,发现预处理 200 就能过。
于是造出如下数据。
#include <bits/stdc++.h>
#define re register
using namespace std;
inline int read(){
int r = 0,w = 1;
char c = getchar();
while (c < '0' || c > '9'){
if (c == '-') w = -1;
c = getchar();
}
while (c >= '0' && c <= '9'){
r = (r << 3) + (r << 1) + (c ^ 48);
c = getchar();
}
return r * w;
}
int main(){
int n = 5;
printf("%d\n",n);
while (n--){
int m = 2000;
printf("%c",n % 26 + 'a');
for (re int i = 1;i < m;i++) putchar('a');
puts("");
}
return 0;
}
原理上就是使二分刚开始都会成立,直到长度过大 pw 没有预处理出来。