华南理工大学2022年程序设计竞赛新生赛
A. 纳西妲
题意: 给你一个字符串仅含东南西北(ESWN),刚好构成一个圈,问你是逆时针转的还是顺时针转的。
tip: 顺时针转圈(右转次数大于左转次数),逆时针转圈(左转次数大于右转次数)。
思路: 模拟
- 记录左右转次数
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
#define int ll
signed main() {
ios::sync_with_stdio(false);
int T = 1;
cin >> T;
while (T--) {
string s;
cin >> s;
int n = s.length();
int cnt = 0;
for (int i = 1; i < n; i++) {
if (s[i] != s[i - 1]) {
if (s[i - 1] == 'N') {
if (s[i] == 'E') {
cnt++;
} else {
cnt--;
}
} else if (s[i - 1] == 'S') {
if (s[i] == 'W') {
cnt++;
} else {
cnt--;
}
} else if (s[i - 1] == 'W') {
if (s[i] == 'N') {
cnt++;
} else {
cnt--;
}
} else {
if (s[i] == 'S') {
cnt++;
} else {
cnt--;
}
}
}
}
if (cnt > 0) {
cout << "CW" << '\n';
} else {
cout << "CCW" << '\n';
}
}
return 0;
}
B. 玩游戏
题意: A A A和 B B B玩游戏,如果谁操作前 a 1 = 1 a_{1}=1 a1=1,那么谁就输了,每次操作是,取一个 i ( 2 ⩽ i ⩽ n ) i(2\leqslant i \leqslant n) i(2⩽i⩽n),使得 a i = f ( a i ) a_{i}=f(a_{i}) ai=f(ai),其中
f ( x ) = { x 2 x 是偶数 3 x + 1 x 是奇数 f(x)=\begin{cases} \frac{x}{2}&x是偶数\\ 3x+1&x是奇数 \end{cases} f(x)={
2x