浮点精度
#include <cstdio>
#include <cmath>
#define AC 0
#define WA 1
const double eps = 1e-3;
int main(int argc, char *args[]) {
FILE *f_in = fopen(args[1], "r");
FILE *f_user = fopen(args[2], "r");
FILE *f_out = fopen(args[3], "r");
int ret = AC;
int t;
double a, x;
fscanf(f_in, "%d", &t);
while (t--) { //从输入中读取数据组数 t
fscanf(f_out, "%lf", &a);
fscanf(f_user, "%lf", &x);
if (fabs(a - x) > eps) {
ret = WA; // Wrong Answer
break;
}
}
fclose(f_in);
fclose(f_out);
fclose(f_user);
return ret;
}
多种解
#include <cstdio>
#include <cstring>
#define AC 0
#define WA 1
const int N=510;
int h[N],e[N],ne[N],idx;
int d[N]; // 入度
int a[N];
int n;
void add (int a, int b) {
e[idx] = b, ne[idx] = h[a], h[a] = idx ++ ;
}
bool judge() {
for(int j=1; j<=n; j++) {
int id=a[j];
if(d[id]!=0) {
return false;
}
for(int i=h[id]; i!=-1; i=ne[i]) {
int u=e[i];
d[u]--;
}
}
return true;
}
int main(int argc,char *args[]) {
memset (h,-1,sizeof h);
FILE * f_in = fopen(args[1],"r");//标准输入
FILE * f_user = fopen(args[2],"r");//用户输出
FILE * f_out = fopen(args[3],"r");//标准输出
int ret = AC;
fscanf(f_in, "%d", &n);
for (int i = 1; i <= n; i ++ ) {
int son;
while(fscanf(f_in, "%d", &son)==1 ,son) {
add(i, son);
d[son] ++ ;
}
}
for (int i = 1; i <= n; i ++ ) {
fscanf(f_user, "%d", &a[i]);
}
if(!judge()) {
ret = WA;
}
fclose(f_in);
fclose(f_out);
fclose(f_user);
return ret;
}
注意:必须要在本地编译器编译通过!
—— 本文来自火龙信奥(义乌睿码科技):义乌青少年信息学奥赛与编程教育平台,专注 CSP-J/S、NOIP、GESP 竞赛培训,线上线下融合教学,助力编程升学。网址:hlcoding.com