巨大的棋盘

链接:https://www.nowcoder.com/acm/contest/164/B

考试时用模拟得了二十分......正解要先算出一个量(往那边走)然后每次加上他.......一定要开long long。。。代码:

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 long long n,m,t,k;
 4 char a[1100000];
 5 int main()
 6 {
 7     cin>>n>>m>>t;
 8     cin>>a;
 9     long long x=0,y=0;
10     for(long long i=0;i<strlen(a);i++)
11     {
12         if(a[i]=='U') x--;//去找往哪边走 
13         if(a[i]=='D') x++;
14         if(a[i]=='L') y--;
15         if(a[i]=='R') y++;
16     }
17     x*=t,y*=t;
18     long long sum;
19     cin>>sum;
20     for(long long i=1;i<=sum;i++)
21     {
22         long long a1,a2;
23         cin>>a1>>a2;
24         a1-=1;//从零开始 
25         a2-=1;
26         a1+=x;
27         a2+=y;
28         a1=(a1%n+n)%n;//是否越界,如果小于零就加N,如果大于就会被求于变成1..... 
29         a2=(a2%m+m)%m;
30         cout<<a1+1<<" "<<a2+1<<endl;//输出 
31     }
32 }

 

posted @ 2018-09-08 13:22  DJY_01  阅读(135)  评论(0编辑  收藏  举报