windows和linux下如何对拍
对拍是各种计算机考试检查时必备工具,实际上十分强大,只要你的暴力没有写错就没有问题。
对拍的意思:(怎么有点语文课的意思雾)
对:看见‘对’就可以知道有两个。
拍:就是把两个程序结果拍在一起,对照(有点牵强)。
实践
由于Windows和Linux系统不同,平常大多数人都用Windows,而在noi系列赛事中都采用Linux系统。
Windows
就以a+b为例吧。
首先摆一个可能是正解的东西。
这个代码文件名:1.cpp
#include<cstdio>
#include<windows.h>
#include<ctime>
#include<cstdlib>
using namespace std;
int main()
{
int a,b;
scanf("%d%d",&a,&b);
for(int i=1;i<=n;i++)a++,b--;
printf("%d\n",a+b);
return 0;
}
现在摆一个一定是正确的但时间和内存超标的代码,当然例子没有超标。
这个代码文件名:2.cpp
#include<cstdio>
using namespace std;
int main()
{
int a,b;
scanf("%d%d",&a,&b);
printf("%d\n",a+b);
return 0;
}
构造数据。
注意
不能只用rand构造,因为rand表示伪随机数,在一定基数下一定,所以用rand构造的随机数出题人也知道你构造的是什么(然后故意卡你)
所以介绍一个新东西。
#include<ctime>
这个怎么用???
srand(time(NULL));
这个时候,他的随机数随时间变化(笑),出题人再也搞不出来卡你的算法了;
rand要用cstdlib库
代码文件名:data.cpp
#include<cstdio>
#include<ctime>
#include<cstdlib>
using namespace std;
int main()
{
srand(time(NULL));
printf("%d %d\n",rand()%1000,rand()%1000);
}
注意换行符必须加,否则你想想手动输入数据不加换行会怎么样。
下面的就是对拍程序:
代码文件名:duipai.cpp
#include<stdio.h>
#include<time.h>
#include<windows.h>
using namespace std;
int main()
{
int t=1000;//如果不是自己电脑可以无限调大,不过要悠着点(笑)
while(t!=0)
{
clock_t t1,t2;//设时间
system("data.exe>data.txt");//把data文件转化成txt格式
t1=clock();
system("1.exe<data.txt>1.txt");//把1文件搜如data.txt然后转化成1.txt
t2=clock()-t1;
system("2.exe<data.txt>2.txt");//把2文件搜如data.txt然后转化成2.txt
printf("time=%dms\n",t2);//计算时间,可能会大一些
if(system("fc 1.txt 2.txt"))break;//比较1.txt与2.txt不同就跳出
t--;
}
if(t==0)printf("no error\n");
else printf("error\n");
getchar();
return 0;
}
程序运行。

如果程序出错就在生成的txt文件里找样例:
data.txt里是样例。1.txt和2.txt是输出。

Linux系统
这个系统是我不经常接触的(实际上只在考试接触),所以如有口胡请见谅,请指出。
还是a+b。(其实Windows也可以这么搞)
文件名:1.cpp
#include<cstdio>
using namespace std;
int main()
{
freopen("add.in","r",stdin);
freopen("add.out","w",stdout);
int a,b;
scanf("%d%d",&a,&b);
for(int i=1;i<=n;i++)a++,b--;
printf("%d\n",a+b);
return 0;
}
暴力:
文件名:2.cpp
#include<cstdio>
using namespace std;
int main()
{
freopen("add.in","r",stdin);
freopen("add1.out","w",stdout);
int a,b;
scanf("%d%d",&a,&b);
printf("%d\n",a+b);
return 0;
}
造数据:
文件名:data.cpp
#include<cstdio>
#include<ctime>
#include<cstdlib>
using namespace std;
int main()
{
freopen("add.in","w",stdout);
srand(time(NULL));
printf("%d %d\n",rand()%1000,rand()%1000);
}
对拍:
文件名:duipai.cpp
#include<bits/stdc++.h>//由于windows.h库在Linux下不可用,我也不知道system应调用什么文件,就用万能头文件233.
using namespace std;
int main()
{
int t=10;
while(t!=0)
{
clock_t t1,t2;
system("./data");//打开data
t1=clock();
system("./1");//打开文件1
t2=clock()-t1;
system("./2");//打开文件2
printf("time=%dms\n",t2);
if(system("diff add.out add1.out"))break;//比较答案
t--;
}
if(t==0)printf("no error\n");
else printf("error\n");
getchar();
return 0;
}
由于不善于用linux系统,所以没有留下图片,抱歉
点击右下角推荐
评论区可以表白
windows和linux下如何对拍的更多相关文章
- Linux下程序对拍_C++
此博客需要付费才阅读,因为该博客实用性十分强,且十分容易理解 若需购买请联系博主,联系方式戳这 http://www.cnblogs.com/hadilo/p/5932395.html 主要介绍如何在 ...
- Windows 和 Linux 下 禁止ping的方法
Windows 和Linux 下 禁止ping的方法 目的: 禁止网络上的其他主机或服务器ping自己的服务器 运行环境: Windows 03.08 linux 方法: Windows 03下: ...
- Windows与Linux下文件操作监控的实现
一.需求分析: 随着渲染业务的不断进行,数据传输渐渐成为影响业务时间最大的因素.究其原因就是因为数据传输耗费较长的时间.于是,依托于渲染业务的网盘开发逐渐成为迫切需要解决的需求.该网盘的实现和当前市场 ...
- 怎样在Windows和Linux下写相同的代码
目前,Linux在国内受到了越来越多的业内人士和用户的青睐.相信在不久的将来,在国内为Linux开发 的应用软件将会有很大的增加(这不,金山正在招兵买马移植WPS呢).由于未来将会是Windows和L ...
- socket在windows下和linux下的区别
原文:socket在windows下和linux下的区别 1)头文件 windows下winsock.h/winsock2.h linux下sys/socket.h 错误处理:errno.h 2 ...
- windows和linux下关闭Tomcat进程
windows和linux下解决Tomcat进程 windows下启动Tomcat报错,8080端口号被占用,报错信息如下 两种解决方法,一种是关闭了这个端口号,另外一种是修改Tomcat下的serv ...
- HDP2.0.6+hadoop2.2.0+eclipse(windows和linux下)调试环境搭建
花了好几天,搭建好windows和linux下连接HDP集群的调试环境,在此记录一下 hadoop2.2.0的版本比hadoop0.x和hadoop1.x结构变化很大,没有eclipse-hadoop ...
- windows下的java项目打jar分别编写在windows与linux下运行的脚本( 本人亲测可用!)
前言: 最近公司做了一个工具,要将这个工具打包成一个可运行的程序,编写start.bat和start.sh在windows和linux下都可以运行. 在网上找了很多资料,最后终于找到一个可靠的资料,记 ...
- Windows和Linux下通用的线程接口
对于多线程开发,Linux下有pthread线程库,使用起来比较方便,而Windows没有,对于涉及到多线程的跨平台代码开发,会带来不便.这里参考网络上的一些文章,整理了在Windows和Linux下 ...
随机推荐
- 利用Rsync同步工具上传、删除目标文件
Rsync是文件备份工具,当然也可以当做传输工具,管理远程服务器的文件 上传 rsync -avzP --progress --port 9106 /path/.../指定文件 root@192.16 ...
- Qt VS版本添加调试器
Qt的VS版本默认是不带调试器的,可以去百度一个WinDbg,如下图所示. 将其中的cdb.exe添加到Qt Creator构建和运行的Debuggers标签页即可,如下图所示. http://blo ...
- Java基础(六) static五大应用场景
static和final是两个我们必须掌握的关键字.不同于其他关键字,他们都有多种用法,而且在一定环境下使用,可以提高程序的运行性能,优化程序的结构.上一个章节我们讲了final关键字的原理及用法,本 ...
- java集合框架collection(3)Set、List和Map
Set.List和Map是java collection中最常用的三种数据结构. Set是集合,不允许有重复的元素,List是动态数组实现的列表,有序可重复,Map是key-value的键值对,用于快 ...
- Android前沿技术
一.热升级Tinker源码解析与手写二.热修复阿里百川Sophix内核原理三.App Instantgoogle8.0 类似热更新技术原理与实战四.强制更新1.银行应用非对称加密对称加密五.组件化框架 ...
- node.js + mssql 简易封装操作
时间吧,总是这么凑巧,在我学习[node.js]还没几天,我的 Microsoft SQL Server Management Studio 18 就歇菜了,至于怎么歇菜的吧....它可能的意思就是想 ...
- 给定一个整数数组和一个目标值,找出数组中和为目标值的两个数 例如给定nums = [2,7,11,15],target = 9
python解决方案 nums = [1,2,3,4,5,6] #假如这是给定的数组 target = 9 #假如这是给定的目标值 num_list = [] #用来装结果的容器 def run(nu ...
- 为什么wepy的数据无法渲染到实例里面去
为啥明明WEPY是将数据渲染到视图还会出这个问题呢? 因为只是类似于 Vue 框架,所以不能完全实现数据渲染,尤其当异步操作的时候. (1)WePy 普通数据绑定. WePY使用脏数据检查对setDa ...
- Appium+python自动化(十七)- 你难道猴哥失散多年的混血弟弟 - Monkey简介之开山篇(超详解)
简介 今天由宏哥给小伙伴们来介绍猴哥的混血弟弟=Monkey.Monkey 是Android SDK提供的一个命令行工具, 可以简单,方便地运行在任何版本的Android模拟器和实体设备上. Monk ...
- Git使用小技巧之回滚和撤销
想要获取更多文章可以访问我的博客 - 代码无止境. 日常的开发,我们难免会创建错误的git提交记录,整个时候git给我们提供了两个命令来解决这个问题.一个命令是git reset,另一个是git re ...