时间: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。