为什么会RE
查看原帖
为什么会RE
733140
zwyyy楼主2023/6/11 21:00

这是我AC的代码

#include<bits/stdc++.h>
using namespace std;
int a[105], b[100005];	//b是个桶
int main(){
	int n, ans = 0;
	scanf("%d", &n);
	for(int i = 1; i <= n; ++i){
		scanf("%d", &a[i]);
		b[a[i]] = 1;
	}
	for(int i = 1; i <= n; ++i){
		for(int j = 1; j <= n; ++j){
			if(i != j){
				if(b[a[i] + a[j]] == 1){
					++ans;
					b[a[i] + a[j]] = 0;
				}
			}
		}
	}
	printf("%d", ans);
	return 0;
}

这是我90分的代码

#include<bits/stdc++.h>
using namespace std;
int a[105], b[10005];
int main(){
	int n, ans = 0;
	scanf("%d", &n);
	for(int i = 1; i <= n; ++i){
		scanf("%d", &a[i]);
		b[a[i]] = 1;
	}
	for(int i = 1; i <= n; ++i){
		for(int j = 1; j <= n; ++j){
			if(i != j){
				if(b[a[i] + a[j]] == 1){
					++ans;
					b[a[i] + a[j]] = 0;
				}
			}
		}
	}
	printf("%d", ans);
	return 0;
}

可以看出,我只不过是将b[100005]改成了b[10005]就会在#2RE

但是在题目描述中又说到测验题给出的正整数大小不超过10,000

为此,我下载了#2的数据

链接

然后我发现,本来在开头位置的100 6094变成了1006094

也不知道是不是因为这个导致的RE

球球各位大佬看看是什么情况吧

2023/6/11 21:00
加载中...