巨大的棋盘
链接: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 }