這一場血崩了,A題交太快WA了,B題讀錯題WA了,C題沒特判WA了..orz..
A. The Useless Toy【模擬】
題意:
1.給你2個符號和1個數字,代表初始狀態、終止狀態、旋轉次數。
2.保證輸入數據正確,問你輸入的旋轉是順時針、逆時針還是不能確定。
思路:
暴力模擬。
代碼:
#include <bits/stdc++.h>
using namespace std;
typedef pair<int,int>pii;
typedef long long LL;
int main() {
char a, b;
char op[] = {'v', '<', '^', '>'};
cin >> a >> b;
int n;
cin >> n; n %= 4;
int idx;
for(idx = 0; idx < 4; idx++) if(op[idx] == a) break;
int sum = 0;
//模擬順時針
while(1) {
if(op[idx] == b) break;
idx = (idx + 1) % 4; //循環
sum ++;
}
if(sum == 2 || sum == 0) puts("undefined");
else if(sum == n) puts("cw");
else puts("ccw");
}
B. The Festive Evening【模擬】
題意:
1.給你n個客人和k個守衛,城堡最多有26個門,用ABC…Z代表。
2.按時間順序給你n個客人進的門。
3.守衛必須在每個門的客人到來前開門,且在最後一個通過該門的客人離開時才能關門。
4.爲了滿足3,問你守衛是否夠數。
思路:
1.記錄每個門的客人人數。
2.按時間順序模擬,如代碼註釋。
代碼:
#include <bits/stdc++.h>
using namespace std;
string s;
int mp[500];
bool vis[500];
int main() {
int n, k;
memset(vis, false, sizeof(vis));
memset(mp, 0, sizeof(mp));
cin >> n >> k >> s;
//記錄每個門的人數
for(int i = 0; i < s.size(); ++ i)
mp[s[i]] ++;
for(int i = 0; i < s.size(); ++ i) {
mp[s[i]] --;
//第一次經過
if(vis[s[i]] == false) {
vis[s[i]] = true, k--;
if(k < 0) return 0 * puts("YES");
}
//如果時最後一個進入該門的人,則守衛又空出一個
if(mp[s[i]] == 0) k++;
}
puts("NO");
}
C. The Meaningless Game【數學】
題意:
1.
2.兩個人,初始成績都爲
3.每次選一個數k,其中一人乘以
4.問最終能否匹配
思路:
1.每一次選
2.所以只要判斷最終成績成績能否開3次方,且能整除
代碼:
#include <bits/stdc++.h>
using namespace std;
typedef long long LL;
int main() {
int n;
scanf("%d", &n);
long long a, b;
while(n--) {
scanf("%I64d %I64d", &a, &b);
LL t = a * b;
LL tp = pow(t, 1.0/3);
bool f = false;
//防止精度丟失
for(LL i = tp - 2; i <= tp + 2; i++) {
if(i * i * i == t && a % i == 0 && b % i == 0) {
puts("Yes");
f = true;
break;
}
}
if(f == false) puts("No");
}
}