社区讨论

代码一个神奇的问题

学术版参与者 3已保存回复 8

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
8 条
当前快照
1 份
快照标识符
@mhjd9c62
此快照首次捕获于
2025/11/04 00:40
4 个月前
此快照最后确认于
2025/11/04 00:40
4 个月前
查看原帖
就是今天打基础赛做t2时出现了一件很神奇的事,如果我这样写
CPP
#include<bits/stdc++.h>
using namespace std;
const int N = 5e6 + 5;
int T, a[N], b[N];
int main() {
	cin >> T;
	while(T --) {
		int n, flag = 1;
        scanf("%d", &n);        
		for(int i = 1; i <= n; i ++) scanf("%d", &a[i]);
		for(int i = 1; i <= n; i ++) {
			scanf("%d", &b[i]);
			if((b[i] % 2) != (a[i] % 2)) {
				flag = 0;
				break;
			}
		}
		if(n == 1) {
			printf("Yes\n");
			continue;
		}
		if(flag) printf("Yes\n");
		else printf("No\n");
	}
	return 0;
}
那它不仅会T还会WA。
但如果我这样写:
CPP
#include<bits/stdc++.h>
#define int long long
using namespace std;
const int N = 5e6 + 5;
int T, a[N], b[N];
signed main() {
	cin >> T;
	while(T --) {
		int n = 0, flag = 1;
        scanf("%lld", &n);    
		for(int i = 1; i <= n; i ++) scanf("%lld", &a[i]);
		for(int i = 1; i <= n; i ++) {
			scanf("%lld", &b[i]);
			int a1 = a[i] % 2, b1 = b[i] % 2;
			if(a1 == 0 && b1 == 1) flag = 0;
			if(a1 == 1 && b1 == 0) flag = 0;
		}
		if(n == 1) {
			printf("Yes\n");
			continue;
		}
		if(flag) printf("Yes\n");
		else printf("No\n");
	}
	return 0;
}
它就过了,这是为什么啊(雾
而且如果只开1e6的话还会RE

回复

8 条回复,欢迎继续交流。

正在加载回复...