对拍是各种计算机考试检查时必备工具,实际上十分强大,只要你的暴力没有写错就没有问题。


对拍的意思:(怎么有点语文课的意思雾)

对:看见‘对’就可以知道有两个。

拍:就是把两个程序结果拍在一起,对照(有点牵强)。


实践

由于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下如何对拍的更多相关文章

  1. Linux下程序对拍_C++

    此博客需要付费才阅读,因为该博客实用性十分强,且十分容易理解 若需购买请联系博主,联系方式戳这 http://www.cnblogs.com/hadilo/p/5932395.html 主要介绍如何在 ...

  2. Windows 和  Linux 下 禁止ping的方法

    Windows 和Linux 下 禁止ping的方法 目的: 禁止网络上的其他主机或服务器ping自己的服务器 运行环境: Windows 03.08  linux 方法: Windows 03下: ...

  3. Windows与Linux下文件操作监控的实现

    一.需求分析: 随着渲染业务的不断进行,数据传输渐渐成为影响业务时间最大的因素.究其原因就是因为数据传输耗费较长的时间.于是,依托于渲染业务的网盘开发逐渐成为迫切需要解决的需求.该网盘的实现和当前市场 ...

  4. 怎样在Windows和Linux下写相同的代码

    目前,Linux在国内受到了越来越多的业内人士和用户的青睐.相信在不久的将来,在国内为Linux开发 的应用软件将会有很大的增加(这不,金山正在招兵买马移植WPS呢).由于未来将会是Windows和L ...

  5. socket在windows下和linux下的区别

    原文:socket在windows下和linux下的区别 1)头文件 windows下winsock.h/winsock2.h linux下sys/socket.h    错误处理:errno.h 2 ...

  6. windows和linux下关闭Tomcat进程

    windows和linux下解决Tomcat进程 windows下启动Tomcat报错,8080端口号被占用,报错信息如下 两种解决方法,一种是关闭了这个端口号,另外一种是修改Tomcat下的serv ...

  7. HDP2.0.6+hadoop2.2.0+eclipse(windows和linux下)调试环境搭建

    花了好几天,搭建好windows和linux下连接HDP集群的调试环境,在此记录一下 hadoop2.2.0的版本比hadoop0.x和hadoop1.x结构变化很大,没有eclipse-hadoop ...

  8. windows下的java项目打jar分别编写在windows与linux下运行的脚本( 本人亲测可用!)

    前言: 最近公司做了一个工具,要将这个工具打包成一个可运行的程序,编写start.bat和start.sh在windows和linux下都可以运行. 在网上找了很多资料,最后终于找到一个可靠的资料,记 ...

  9. Windows和Linux下通用的线程接口

    对于多线程开发,Linux下有pthread线程库,使用起来比较方便,而Windows没有,对于涉及到多线程的跨平台代码开发,会带来不便.这里参考网络上的一些文章,整理了在Windows和Linux下 ...

随机推荐

  1. 海康威视频监控设备Web查看系统(一):概要篇

    声明:本系列文章只提供交流与学习使用.文章中所有涉及到海康威视设备的SDK均可在海康威视官方网站下载得到.文章中所有除官方SDK意外的代码均可随意使用,任何涉及到海康威视公司利益的非正常使用由使用者自 ...

  2. 配置 ClientIDMode 控件ID生成规则

    废话不说先例子: <asp:GridView ID="grd" runat="server"AutoGenerateColumns="False ...

  3. Python时间戳的一些使用

    Python时间戳的一些使用 为什么写下这篇文档? 由于我本身是做Python爬虫的,在爬取网站的过程当中,会遇到形形色色的验证码,目前对于自己而言,可能简单的验证码可以进行自己识别 发现大多数的网站 ...

  4. spark 2.x在windows环境使用idea本地调试启动了kerberos认证的hive

    1 概述 开发调试spark程序时,因为要访问开启kerberos认证的hive/hbase/hdfs等组件,每次调试都需要打jar包,上传到服务器执行特别影响工作效率,所以调研了下如何在window ...

  5. 从理论到实践,全方位认识HTTP/2

    前言   为了降低加载时间,相信大多数人都做过如下尝试   - Keep-alive: TCP持久连接,增加了TCP连接的复用性,但只有当上一个请求/响应完全 完成后,client才能发送下一个请求 ...

  6. Storm 学习之路(三)—— Storm单机版本环境搭建

    1. 安装环境要求 you need to install Storm’s dependencies on Nimbus and the worker machines. These are: Jav ...

  7. 8天入门docker系列 —— 第七天 让你的container实现跨主机访问

    当你有若干个容器之后,你可能就希望实现容器的跨机部署访问了,比如aspnetcore在一台host上,mysql在另外一个host上,如果要实现这样的功能,需要你借助 docker自带的overlay ...

  8. 你所不知的spring与mybatis整合方法

    内容目录 1.采用MapperScannerConfigurer2.采用接口org.apache.ibatis.session.SqlSession的实现类org.mybatis.spring.Sql ...

  9. flume1.9 用户指南(中文版)

    概述 Apache Flume是一个分布式,可靠且可用的系统,用于有效地从许多不同的source收集,聚合和移动大量日志数据到集中式数据存储. Apache Flume的使用不仅限于日志数据聚合.由于 ...

  10. Qt实现炫酷启动图-动态进度条

    目录 一.简述 二.动效进度条 1.光效进度条 2.延迟到达进度条 3.接口说明 三.启动图 1.实现思路 2.背景图切换 四.测试 1.构造启动图 2.背景图 3.其他信息 4.事件循环 五.源码 ...