求dalao指点,蒟蒻卡住了

P1563 [NOIP2016 提高组] 玩具谜题

```cpp 代码如下: #include<iostream> #include<cstdio> #include<string> #include<cmath> using namespace std; int a[100005],b[100005]; struct people{ int lo; //lo表示位置 string name; }s[100005]; int caozuo(int x);//自定义操作函数 int n,m,pos=1; //pos用于记下位置 int main() { cin>>n>>m; for(int i=1;i<=n;i++) { cin>>s[i].lo>>s[i].name; } for(int i=1;i<=m;i++) { cin>>a[i]>>b[i]; } for(int i=1;i<=m;i++) { caozuo(i); } cout<<s[pos].name; return 0; } int caozuo(int x) { if(a[x]==s[pos].lo)//a[x]表示向左还是向右 { pos=n-b[x]+pos;//b[x]表示位移个数 while(pos>n) { pos=pos-n; } while(pos<=0) { pos=pos+n; } } else if(a[x]!=s[pos].lo) { pos=pos+b[x]; while(pos+b[x]>n) { pos=pos-n; } } } ``` cin>>n>>m; for(int i=1;i<=n;i++) { cin>>s[i].lo>>s[i].name; } for(int i=1;i<=m;i++) { cin>>a[i]>>b[i]; } for(int i=1;i<=m;i++) { caozuo(i); } cout<<s[pos].name; return 0; } int caozuo(int x) { if(a[x]==s[pos].lo)//a[x]表示向左还是向右 { pos=n-b[x]+pos;//b[x]表示位移个数 while(pos>n) { pos=pos-n; } while(pos<=0) { pos=pos+n; } } else if(a[x]!=s[pos].lo) { pos=pos+b[x]; while(pos+b[x]>n) { pos=pos-n; } } }
by 清歌’ @ 2018-07-15 16:32:39


我并不觉得有人能看懂 重新发一遍吧
by everdream @ 2018-07-15 16:33:08


@[Quanta](/space/show?uid=82722) ```cpp 代码如下: #include<iostream> #include<cstdio> #include<string> #include<cmath> using namespace std; int a[100005],b[100005]; struct people{ int lo; //lo表示位置 string name; }s[100005]; int caozuo(int x); //自定义操作函数 int n,m,pos=1; //pos用于记下位置 int main() { cin>>n>>m; for(int i=1;i<=n;i++) { cin>>s[i].lo>>s[i].name; } for(int i=1;i<=m;i++) { cin>>a[i]>>b[i]; } for(int i=1;i<=m;i++) { caozuo(i); } cout<<s[pos].name; return 0; } int caozuo(int x) { if(a[x]==s[pos].lo)//a[x]表示向左还是向右 { pos=n-b[x]+pos;//b[x]表示位移个数 while(pos>n) { pos=pos-n; } while(pos<=0) { pos=pos+n; } } else if(a[x]!=s[pos].lo) { pos=pos+b[x]; while(pos+b[x]>n) { pos=pos-n; } } } ```
by 清歌’ @ 2018-07-15 16:34:31


@[清歌’](/space/show?uid=87378) //lo表示位置 这一句改成 lo表示朝向
by 清歌’ @ 2018-07-15 16:37:15


|