程序对拍
1、首先需要一个生成随机数据的程序
采用rand()函数生成的数据并不是真正的随机数,我们采用下面代码中的random(a,b)来生成一个[a,b]的随机数
1 #include<cstdio> 2 #include<cstring> 3 #include<algorithm> 4 #include<cstdlib> 5 #include<sstream> 6 #include<ctime> 7 #include<cassert> 8 using namespace std; 9 typedef long long ll; 10 int myrand(int mod) { return ((ll)rand()<<32^(ll)rand()<<16^rand())%mod; } 11 #define random(a, b)((a) + myrand((b) - (a) + 1)) //Integer[a,b] 12 int main(int argc, char *argv[]) { 13 stringstream ss; 14 int seed = time(NULL); 15 if (argc) { 16 ss << argv[1]; 17 ss >> seed; 18 } 19 srand(seed); 20 int n = random(1, 10); //1到10组数据 21 22 assert(1 <= n && n <= 10); 23 24 printf("%d\n", n); 25 for (int i = 0; i < n; i++) { //生成n个区间 26 int tmp1 = random(1, 1000); 27 int tmp2 = random(tmp1, 1000); 28 printf("%d %d\n",tmp1,tmp2); 29 } 30 return 0; 31 }
2、准备好标程(baoli)代码,与你的程序代码
3,、准备同一个文件夹里的bat程序,bat代码(原理)如下:
ps:运行前请删掉我的注释
1 @echo off //不在cmd中显示以下代码 2 3 g++ x.cpp -o y -std=c++11 -static -O2 //以g++编译x代码,生成y.exe,-O2优化 4 g++ rand.cpp -o rand -std=c++11 -static -O2 5 g++ std.cpp -o std -std=c++11 -static -O2 6 7 for /l %%i in (1, 1, 10) do ( //循环10次 8 rand %random% >in.txt //将随机种子输入到rand.exe,并将该程序的输出写入到in.txt 9 ff <in.txt >out.txt //将in.txt定向为ff.exe的输入流,out.txt为输出流 10 std <in.txt >stdout.txt 11 fc out.txt stdout.txt //类似字符串比较 12 if errorlevel 1 ( 13 echo WA 14 goto END 15 ) 16 ) 17 echo AC 18 :END 19 pause & exit