样例通过但全WA,大佬求调!(会回关)
查看原帖
样例通过但全WA,大佬求调!(会回关)
1020740
felix0304楼主2024/11/3 20:52

#include #include

using namespace std;

int main() { string s; getline(cin, s); long long t; cin >> t;

// 如果 T 小于命令串的长度,直接计算前 T 秒的位移
if (t < s.length()) {
    long long x_ans = 0, y_ans = 0;
    for (long long i = 0; i < t; i++) {
        if (s[i] == 'E') x_ans++;
        else if (s[i] == 'W') x_ans--;
        else if (s[i] == 'N') y_ans++;
        else if (s[i] == 'S') y_ans--;
    }
    cout << x_ans << " " << y_ans << endl;
} else {
    // 计算一个周期内的总位移
    long long deltaX = 0, deltaY = 0;
    for (int i = 0; i < s.length(); i++) {
        if (s[i] == 'E') deltaX++;
        else if (s[i] == 'W') deltaX--;
        else if (s[i] == 'N') deltaY++;
        else if (s[i] == 'S') deltaY--;
    }

    // 计算完整周期的数量和剩余时间
    long long fullCycles = t / s.length();
    long long remainingTime = t % s.length();

    // 计算完整周期后的总位移
    long long x_ans = fullCycles * deltaX;
    long long y_ans = fullCycles * deltaY;

    // 计算剩余时间内的位移
    for (long long i = 0; i < remainingTime; i++) {
        if (s[i] == 'E') x_ans++;
        else if (s[i] == 'W') x_ans--;
        else if (s[i] == 'N') y_ans++;
        else if (s[i] == 'S') y_ans--;
    }

    // 输出最终位置
    cout << x_ans << " " << y_ans << endl;
}

return 0;

}

2024/11/3 20:52
加载中...