可以用断点测试,对于这个题可以更好的发现错误,我一开始也是有两个判断写反了。
附上代码```cpp
#include <iostream>
#include <vector>
using namespace std;
int main() {
int n, na, nb;
cin >> n >> na >> nb;
vector<int> a(na);
vector<int> b(nb);
int ansa = 0,ansb = 0;
for (int i = 0 ; i < na; i++) {
cin >> a[i];
}
for (int i = 0 ; i < nb; i++) {
cin >> b[i];
}
int i = 0, j = 0;
for (int x = 0; x < n; x++) {
/*cout << i <<' '<< j << ' ' << a[i] << ' ' << b[j];*/
if (a[i] == 0) {
if (b[j] == 1 || b[j] == 4) {
ansb++;
}
else if (b[j] == 2 || b[j] == 3) {
ansa++;
}
}
else if (a[i] == 1) {
if (b[j] == 2 || b[j] == 4){
ansb++;
}
else if (b[j] == 3 || b[j] == 0) {
ansa++;
}
}
else if(a[i] == 2) {
if (b[j] ==3 || b[j] == 0) {
ansb++;
}else if(b[j] == 4 || b[j] == 1) {
ansa++;
}
}
else if (a[i] == 3) {
if (b[j] == 4 || b[j] == 2) {
ansa++;
}else if(b[j] == 0 || b[j] == 1) {
ansb++;
}
}
else if (a[i] == 4) {
if (b[j] == 0 || b[j] == 1) {
ansa++;
}
else if (b[j] == 2 || b[j] == 3) {
ansb++;
}
}
if (i == na - 1) {
i = 0;
}else {
i++;
}
if(j == nb - 1) {
j = 0;
}else {
j++;
}
/*cout << ' ' << ansa << ' ' << ansb << "\n";*/
}
cout << ansa << ' ' << ansb << endl;
return 0;
}
```
by a13901280570 @ 2024-03-15 23:30:27