当我们自己想出题时,就需要我们自己出数据啦qwq。
这里以出A+Bproblem的数据为例qwq。
模板代码:
#include<bits/stdc++.h>
#include<windows.h>
using namespace std;
#define Rand() ((rand() << 15) + rand())
const int maxn = 1e5 + 40;
char a[maxn], b[maxn];
FILE *work(FILE *fp, int now) {
fprintf(fp, "%d %d", Rand()%1000, Rand()%1000);
return fp;
}
signed main() {
srand(time(0));
for(int i = 1; i <= 20; i++) {
sprintf(a, "add%d.in", i);
fclose(work(fopen(a, "w"), i));
sprintf(b, "std.exe < add%d.in > add%d.out", i, i);
system(b);
printf("test #%d is ok now
", i);
}
return 0;
}
其中work为你生成数据的函数,一般main()函数里没有啥需要修改的qwq。
add为生成数据的文件名,std.exe是你标准程序运行后生成的exe文件,名字是可以修改的。
就假如你的标准程序名字是map,那么他编译运行后生成的exe文件就是map.exe。
你就把下面这一行:
sprintf(b, "std.exe < add%d.in > add%d.out", i, i);
改成这样就可以了:
sprintf(b, "map.exe < add%d.in > add%d.out", i, i);
同理add也是可以修改的,你可以改成这样:
sprintf(a, "qwq%d.in", i);
fclose(work(fopen(a, "w"), i));
sprintf(b, "std.exe < qwq%d.in > qwq%d.out", i, i);
一个地方修改了以后所有地方都要修改。
其中注意std.exe要和data.exe处在同一文件夹内,而且std一定要编译运行过即产生了exe文件!!
没啦qwq!