题目
洛谷原题链接:link.
总体思想:
一个类保存朝向与职业,根据操作的不同对下标进行加减
细节
注意要起到循环效果
实现方法:
1.减的时候 j = (j + n - y) % n
2. 加的时候j = (j + y) % n;
#include<bits/stdc++.h>
using namespace std;
class peo
{
public:
int direction;
string profession;
void sett(int a, string b)
{
direction = a;
profession = b;
}
};
int main()
{
int n, m, i;
cin >> n >> m;
peo* a = new peo[n];
int d;
string e;
for (i = 0; i < n; i++)
{
cin >> d >> e;
a[i].sett(d, e);
}
int x, y, j = 0;
for (i = 0; i < m; i++)
{
cin >> x >> y;
if ((a[j].direction == 0 && x == 0) || (a[j].direction == 1 && x == 1))
{
j = (j + n - y) % n;
}
else
{
j = (j + y) % n;
}
}
cout << a[j].profession;
}