RT,本MnZn在造数据时发现标程 文件重定向后的输出和不文件重定向后的输出不同,文件重定向后甚至会出现缺少行数,代码是这样的
#include <bits/stdc++.h>
#define std_open(s) freopen((s+".in").c_str(),"r",stdin),freopen((s+".out").c_str(),"w",stdout);
#define std_ck if(argc<2){std::cerr<<"less arguments";return 1;}std_open(std::string(argv[1]))
using namespace std;
const int UP = 30 + 5;
double d[UP];
int main(int argc,char *argv[])
{
std_ck;//在cmd里输入 程序名.cpp test_1 即可实现打开test_1.in以及test_1.out,注释掉即可正常在控制台输入
int n;
double t;
while(scanf("%d%lf", &n, &t) && n) {
//省略
printf("%.3f\n", d[0]);
}
return 0;
}
我使用这个标程造出数据后在洛谷上提交标程(去除了文件输入输出部分)也得了全WA。
后来我认为是输入的问题,将标程改为了
#include <bits/stdc++.h>
#define std_open(s) freopen((s+".in").c_str(),"r",stdin),freopen((s+".out").c_str(),"w",stdout);
#define std_ck if(argc<2){std::cerr<<"less arguments";return 1;}std_open(std::string(argv[1]))
using namespace std;
const int UP = 30 + 5;
double d[UP];
int main(int argc,char *argv[])
{
std_ck;
int n;
double t;
while(std::cin>>n>>t && n) {//这里改为了std::cin
//省略
printf("%.3lf\n",d[0]);//这里将.3f改为了.3lf
}
return 0;
}
再使用这个标程造出数据后在洛谷上提交标程,获得了70分,再修改两次数据后AC了。
不理解为什么会这样,是因为浮点数误差还是什么,如果是,为什么我改了之后也只有70分呢