1 条题解
-
1
对拍是一种可以让我们快速检测自己代码正确性的方式。一组对拍程序由以下几种程序组成:数据生成器,暴力程序,自己的程序及对拍程序。
以本题为例写一组对拍程序,示例如下:
1.个人程序
mycode.cpp,这里自己写就好了,不需要freopen。2.数据生成器
maker.cpp,注意数据不要太大以免暴力超时。#include<bits/stdc++.h> using namespace std; mt19937 gen(time(0)); int get(int mod){return (gen()%mod);} int main() { int n=5,m=10;//n和m可以自己改变,能理解即可 cout<<n<<'\n'; for(int i=1;i<=n;i++)cout<<get(m)<<" "; return 0; }3.暴力程序
runner.cpp#include<bits/stdc++.h> using namespace std; #define int long long int a[110]; bool pd(int x) { int y=sqrt(x); return y*y==x; } signed main() { int n;cin>>n; for(int i=1;i<=n;i++)cin>>a[i]; int ans=0; for(int i=1;i<=n;i++) for(int j=i+1;j<=n;j++) if(pd(a[i]*a[j]))ans++; cout<<ans; return 0; }4.对拍程序
duipai.cpp,也是最重要的部分。#include<bits/stdc++.h> using namespace std; bool solve() { system("maker.exe > std.in"); system("runner.exe < std.in > std.out"); system("mycode.exe < std.in > myout.txt"); if(system("fc myout.txt std.out")) { puts("WA"); return 0; } else puts("AC"); return 1; } int main() { int n=200;//你可以根据自己的需要设定调试数组,也可以while(1) while(n--) { if(solve()==0)return 0; } return 0; }注意,这4个程序需要放到同一个文件夹里,且对拍的文本文件会自动生成。
- 1
信息
- ID
- 7904
- 时间
- 2000ms
- 内存
- 1024MiB
- 难度
- 7
- 标签
- 递交数
- 38
- 已通过
- 9
- 上传者