本文主要是题A到题D的详细思路和解法,如果觉得有帮助或者写的还不错可以点个赞
个人觉得D的题解写的比较详细
本次比赛题目链接:Dashboard - Codeforces Round 966 (Div. 3) - Codeforces
目录
题目A:
题目大意解析和解题思路:
题目大意就是一个人写下了一个数字,这个数字是10^x次方的形式,但是"^"这个符号忘记写了,然后就写成一串了,已知底数是10,然后指数大于2,然后判断这个数字是否可能是他写下来的数字
比如
100,不是,因为指数小于2
1004,不符合书写条件
1010,105,是的,满足条件
2033,不满足底数是10的条件
将输入的数字转换成字符串就行了,然后满足上面条件的字符串
长度必须大于等于3,然后第一位必须是1,第二位必须是0,如果长度等于三位,那第三位必须大于等于2,如果长度大于三位,那么第一位不能为0
嗯...很好理解的逻辑
代码(C++):
int main() {
ios::sync_with_stdio(false);
cin.tie(0);
int tt;
cin >> tt;
while (tt--) {
string s;
cin >> s;
if (s.size() < 3) {
cout << "NO\n";
continue;
}
if (s[0] != '1' || s[1] != '0') {
cout << "NO\n";
continue;
}
if (s.size() == 3 && s[2] < '2' || s.size() > 3 && s[2] == '0') {
cout << "NO\n";
continue;
}
cout << "YES\n";
}
return 0;
}
代码(Python):
def main():
t = II()
res = []
for _ in range(t):
s = input()
r = 1
if len(s) < 3:
res.append("NO")
continue
if s[0] != '1' or s[1] != '0':
res.append("NO")
continue
if (len(s) == 3 and s[2] < '2') or (len(s) > 3 and s[2] == '0'):
res.append("NO")
continue
res.append("YES")
for r in res:
print(r)
题目B:
题目大意解析和解题思路:
题目可以理解依次上车,座位就是一列,然后有一个规则,就是上车的人必须前面或者后面有人
都有人也行(这种情况出现的前提是前面有人违规),然后给你一个数组,从前到后依次表示第一个人到最后一个人选择的位置,判断是否都按规则来了
用哈希表模拟就行了,遍历一遍数组,然后不断加入新元素x,判断x - 1或者 x + 1是否在哈希表中即可
代码(C++):
int main() {
ios::sync_with_stdio(false);
cin.tie(0);
int tt