程序对拍

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   }
View Code

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

 

posted @ 2018-02-02 14:29  hzhuan  阅读(254)  评论(0编辑  收藏  举报