似乎发现一组 hack 数据?
查看原帖
似乎发现一组 hack 数据?
494699
卷王慢即快楼主2023/9/24 19:38

为什么,如下 AC 代码:

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;

inline int read() {
	int x = 0, f = 1; char ch = getchar();
	while(ch < '0' || ch > '9') { if(ch == '-') f = -1; ch = getchar(); }
	while(ch >= '0' && ch <= '9') { x = (x << 1) + (x << 3) + (ch ^ 48); ch = getchar(); }
	return x * f;
}


int n, a[1007], b[1007];
int x = -1;
int amx = -107, amn = 107;
int bmx = -107, bmn = 107;
int main() {
	n = read();
	for(int i = 1; i <= n; i++) a[i] = read();
	for(int i = 1; i <= n; i++) b[i] = read();
	for(int i = 1; i <= n; i++) {
		if((a[i] > 0 && b[i] <= 0) || (a[i] <= 0 && b[i] > 0)) {
			x = i; break;
		}
		amx = max(amx, a[i]); amn = min(amn, a[i]);
		bmx = max(bmx, b[i]); bmn = min(bmn, b[i]);
	}
	if(x > 0) {
		for(int i = 1; i <= n; i++)
			if(x == i) printf("1000 ");
			else printf("0 ");
		return 0;
	}
	int aa = -amn / -amx, bb = -bmn / -bmx;
	if(aa > bb) {
		for(int i = 1; i <= n; i++)
			if(a[i] == amn) printf("1 ");
			else if(a[i] == amx) cout << "-" << aa << " ";
			else printf("0 ");
	}
	else {
		for(int i = 1; i <= n; i++)
			if(a[i] == amn) printf("1 ");
			else if(a[i] == amx) cout << "-" << bb << " ";
			else printf("0 ");
	}
	return 0;
}

有如下数据:

3
1 1 4
5 1 4

这份代码输出:

1 1 -0
  • 怎么会输出 -0 呢?
  • 为什么答案带进去似乎不对?

开始怀疑我的数据有问题了。。

2023/9/24 19:38
加载中...