小红书Red Star提前批算法笔试
【嵌入式未来】
嵌入式软件开发最强攻略一篇就够了!《嵌入式软件开发笔试与面试手册》:https://blog.nowcoder.net/zhuanlan/jvN8gj
《嵌入式软件笔试-2023年真题汇总》专栏:https://blog.nowcoder.net/zhuanlan/0oDWVm
小红的数组构造
题目描述:
小红的数组构造小红希望你构造一个数组满足以下条件:1. 数组共有n个元素,且所有元素两两不相等。2. 所有元素的最大公约数等于k。3. 所有元素之和尽可能小。请你输出数组元素之和的最小值。
输入描述
两个正整数n和k
1≤ n,k ≤ 10^5
输出描述
一个正整数,代表数组元素之和的最小值。
样例输入
3 1
样例输出
6
示例 2
输入
2 2
输出
6
#include <iostream>
using namespace std;
int main() {
long long n, k;
cin >> n >> k;
cout << ((1+n)*n/2) * k << endl;
return 0;
}
精华帖子
题目描述:
小红书的推荐帖子列表为[0,n],其中所有的帖子初始状态为“普通”,现在运营同学把其中的一些帖子区间标记为了“精华”。
输入描述
第一行输入两个正整数n,m,k,代表初始帖子列表长度,精华区间的数量,以及运营同学准备截取的长度。
接下来的m行,每行输入两个正整数li,ri,代表第i个区间。
1 ≤ k ≤ n ≤ 1000000000
1 ≤ m ≤ 100000
0 ≤ li < ri ≤ n
保证任意两个区间是不重叠的。
输出描述
一个正整数,代表最多的精华帖子数量。
样例输入
5 2 3
1 2
3 5
样例输出
2
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main() {
int n, m, k;
cin >> n >> m >> k;
vector<vector<int>> itv(m, vector<int>(2));
for (int i = 0; i < m; i++) {
cin >> itv[i][0] >> itv[i][1];
}
sort(itv.begin(), itv.end());
vector<int> pres(m+1, 0);
for (int i = 1; i <= m; i++) pres[i] = pres[i-1] + (itv[i-1][1] - itv[i - 1][0]); // 计算前缀和
int res = 0; // 初始化结果为0
for (int i = 0 ; i < m ; i++) {
int l = i, r = m ;
// 使用二分查找找到满足条件的区间
while (l < r) {
int mid = (l + r) / 2;
剩余60%内容,订阅专栏后可继续查看/也可单篇购买
本专栏主要发布嵌入式软件开发相关岗位2023年(2024届)的笔试真题(嵌入式软件开发、通用软件开发、C/C++软件开发、算法工程师、数据开发、测试开发等)主要是算法编程题,其中一些岗位笔试含有对应的选择题、填空题、简单题。