洛谷 P1563 玩具谜题
简单模拟,需要注意的时候,用数组存储数据的时候下标不能从 1 开始,而要从 0 开始。因为后面计算的时候取余后可能会得到结果 0 。
#include<bits/stdc++.h>
using namespace std;
struct doll{
int orient;
string name;
}a[100005];
int main(){
int n,m;
cin>>n>>m;
int i,j;
for(i=0;i<n;i++){// 要注意这里不能从 1 开始算, 取余可能会得到 0
cin>>a[i].orient>>a[i].name;
}
int hand,skip;
int ans = 0;//答案是第几个小人呀
for(j=0;j<m;j++){
cin>>hand>>skip;
if(hand != a[ans].orient){
ans = (ans + skip + n) % n;
}
else if(hand == a[ans].orient){
ans = (ans - skip + n) % n;
}
}
cout<<a[ans].name;
return 0;
}