ZR#1008

ZR#1008

解法:

直接预处理出来执行完一个完整的串可以到达的位置,然后算出重复的次数直接乘在坐标上,最后处理一下余下的部分就行了。

CODE:

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>

using namespace std;

#define LL long long
#define N 5050

char ch[N];
int pos1,pos2,T,cnt1,cnt2,x,y;

int main() {
    scanf("%s",ch + 1);
    scanf("%d",&T);
    int len = strlen(ch + 1);
    for(int i = 1 ; i <= len ; i++) {
        if(ch[i] == 'N') y++;
        if(ch[i] == 'S') y--;
        if(ch[i] == 'W') x--;
        if(ch[i] == 'E') x++;
    }
    //cout<<len<< " "<<T;
    //if(len > T) {
        cnt1 = len / T,cnt2 = len % T;
        x = cnt1 * x,y = cnt1 * y;
        for(int i = 1 ; i <= cnt2 ; i++) {
            if(ch[i] == 'N') y++;
            if(ch[i] == 'S') y--;
            if(ch[i] == 'W') x--;
            if(ch[i] == 'E') x++;
        }
    //}
    printf("%d %d\n",x,y);
    //system("pause");
    return 0;
}

猜你喜欢

转载自www.cnblogs.com/Repulser/p/11709171.html