1比较难的一次考试,虽然难度低于预期,但依然打得不好。
选择
这部分比较难,尤其是 \(\text{T4}\) 考得阅读程序,结果没在选项里,其他有逻辑运算,进制运算,其余的比较简单。
个人答案: \(\text{CBDAB}\)
编程
只记得 \(1\),\(2\),\(4\),\(3\) 过了,\(5\) \(6\) 没写出来,
\(1\) 很简单的模拟,循环就行
#include <bits/stdc++.h>
using namespace std;
int main()
{
int day,s = 0,n,x,y;
cin >> n >> x >> y;
for (day = 1;s < n;day++)
{
s = s + x;
x = x + y;
}
cout << day - 1;
}
\(2\) 字符串/其他写法均可,提供一种字符串的写法
#include <bits/stdc++.h>
using namespace std;
int main()
{
string a;
cin >> a;
swap(a[0],a[a.size() - 1]);
while (!a.empty() && a[0] == '0') a.erase(0,1);
cout << a;
\(4\) 代码有点长,给出思路。用前缀和数组 \(f_i\),列出递推式,当 \(i \mod 2=1\) 时,则 \(f_i=f_{i-1}-a_i\),否则 \(f_i = f_{i-1}+a_i\)。则每个字符右移 \(f_n-f_{i-1}\)。接着直接取余右移就行。注意,我在这里被坑了好久: 由于 \(f_n-f_{i-1}\) 可能很大/很小,要 while
,直到符合 \(a_i ≥ 97\) 且 \(a_i ≤ 122\) 停止。