首先来看我ac的代码
#include <iostream>
#include <string>
#include <vector>
using namespace std;
int a[100050];
vector <string> b;
int main ()
{
int m,n;
string t;
cin >> n >> m;
for (int i = 0 ; i < n; ++i)
{
cin >> a[i];
cin >> t;
b.push_back(t);
}
int flag = 0;
for (int i = 0 ; i < m ; ++i)
{
int stt,step,chao;
cin >> stt;
int dir;
chao = a[flag % n];
if (chao==stt) dir = -1;else dir = 1;
cin >> step;
flag += step*dir;
while (flag <0)flag +=n;
flag %= n;
}
cout << b[flag % n];
return 0;
}
然后来看看原本我写错的代码
#include <iostream>
#include <string>
#include <vector>
using namespace std;
int a[100050];
vector <string> b;
int main ()
{
int m,n;
string t;
cin >> n >> m;
for (int i = 0 ; i < n; ++i)
{
cin >> a[i];
cin >> t;
b.push_back(t);
}
int flag = 0;
for (int i = 0 ; i < m ; ++i)
{
int stt,step,chao;
cin >> stt;
int dir;
chao = a[flag % n];
if (chao==stt) dir = -1;else dir = 1;
cin >> step;
flag += step*dir;
}
while (flag <0)flag +=n;
flag %= n;
cout << b[flag % n];
return 0;
}
可以注意到我只是把调正这一步挪到了循环外面题目就出错了,有没有大佬可以解释一下为什么QAQ