前言
整体评价
这相当于蓝桥云课 正式推出算法赛前的公测,主要面向的是大一新生。
比赛题还是以语法题为主,被戏称为"幼稚园杯",^_^。
链接:新生编程排位赛2
A. 妮妮的翻转游戏
Q: 1翻转为0, 0翻转为1,求某个状态翻转一次后是什么?
0-1切换,可以用
x = 1 - x
x = 1 ^ x, 异或操作
这两种方式蛮常见的
#include <iostream>
using namespace std;
int main()
{
int s;
cin >> s;
cout << (1 - s) << endl;
return 0;
}
B. 小蓝的决议
Q: 超过等于一半人的支持,就输出YES,否则输出NO
#include <iostream>
using namespace std;
int main()
{
int t;
cin >> t;
while (t-- > 0) {
int n, x;
cin >> n >> x;
cout << (x >= (n + 1) / 2 ? "YES" : "NO") << endl;
}
return 0;
}
C. 阿坤老师的烹饪评分系统
Q: 取自常见的评委打分场景,去掉最高分/最低分,然后求平均分
模拟题,维护一个最大值m1,一个最小值m2,然后总和s去掉m1和m2,然后取平均值
#include <iostream>
#include <vector>
using namespace std;
int main()
{
int n;
cin >> n;
int acc = 0;
int minV = 0x3f3f3f, maxV = 0;
vector<int> arr(n);
for (int i = 0; i < n; i++) {
cin >> arr[i];
minV = min(minV, arr[i]);
maxV = max(maxV, arr[i]);
acc += arr[i];
}
cout << (acc - minV - maxV) / (n - 2) << endl;
return 0;
}
D. 小桥的冒险
Q: 爬楼梯,要么向上跳Y步,要么向上只走1步,问总共X步楼梯,最少走几步?
终于来了一道贪心,泪目
尽量走Y步,剩下的走1步
X / Y + X % Y
#include <iostream>
using namespace std;
int main()
{
int t;
cin >> t;
while (t-- > 0) {
int x, y;
cin >> x >> y;
cout << x / y + x % y << endl;
}
return 0;
}
E. 阿坤老师的异域字母谜
Q: k进制的两个数a, b, 其乘积并转为10进制的数是啥?
模拟k进制相乘比较麻烦,最好还是转换为10进制,再相乘。
#include <iostream>
using namespace std;
// 定义进制转换函数
int toNumber(const string &s, int k) {
int r = 0;
for (int i = 0; i < s.length(); i++) {
r = r * k + (s[i] - '0');
}
return r;
}
int main()
{
int k;
string a, b;
cin >> k >> a >> b;
int ai = toNumber(a, k);
int bi = toNumber(b, k);
cout << ai * bi << endl;
return 0;
}