时间:2022/9/1 16:00~18:00 20 道选择题 三道编程题 第一题:输入一个数字序列,及镜像复制次数,求第 k 位的数。
#include<iostreaam> #include<vector> using namespace std; int main() { int n, m; long long k; cin >> n >> m >> k; vector a(2 * n, 0); for (int i = 0;i < n;i++) { int t; cin >> t; a[i] = t; a[2 * n - 1 - i] = t; } k %= (2 * n); cout << a[k - 1] << endl; return 0; }
第二题:输入一个数字序列,每次可对一个值加一或减一,求使序列乘积为 7 的最小操作次数。
#include<iostream> #include<vector> #include<cmath> #include<algorithm> using namespace std; int main() { int n; cin >> n; vector a; long long ans = 0; int num = 0; for (int i = 0;i < n;i++) { int t; cin >> t; if (t < 0) { num++; } a.push_back(abs(t)); } int flag = 1; sort(a.begin(), a.end()); if (a[0] == 0) { ans += 1; } else { if (num % 2 == 1) ans += 2 + abs(a[0] - 1); else ans += abs(a[0] - 1); } for (int i = 1;i < a.size() - 1;i++) { ans += abs(a[i] - 1); } ans += abs(a[a.size() - 1] - 7); cout << ans << endl; return 0; }
第三题:n 个城市,m 条路,每天可走 k 单位长度,每条路都是单位长度 m 个数表示路的一个端点 m 个数表示路的另一个端点 m 个数表示过路费用 开通 X 的通行证可以免费通过过路费用不超过 X 的路,求一天内从 1 到 n 所需的最小 X。