美团嵌入式软件开发笔试
软件开发笔试汇总专栏:https://blog.nowcoder.net/zhuanlan/0oDWVm
题型:4道编程题+1道选择题题
一
美团商家的订单发起时,订单编号最开始从1开始,后续每发起一个订单,订单编号便在上一订单编号的基础上+1。为了防止订单号过大,商家还可以设置一个编号上限m,当订单编号超过m时,将又从1开始始编号。
小美想知道,当订单编号上限为m时,第x个订单编号是多少?将有q次询问。
输入描述
第一行输入一个整数q(1≤q≤50000)。
接下来q行,每行两个整数m, x(11m, x110^9).
输出描述
q行,每行一个整数表示答案。
示例1
输入
4
2 3
5 17
8 2
4 4
输出
1
2
2
4
#include <iostream>
using namespace std;
int main() {
int q;
cin >> q;
for (int i = 0; i < q; ++i) {
long long m, x;
cin >> m >> x;
cout << (x % m == 0 ? m : x % m) << endl;
}
return 0;
}
二
小美有一个长度为n的数组,她想将这个数组进行求和,即sum=a1十a2+...+an .
小美可以使用一次魔法(也可以不使用),将其中一个加号变成乘号,使得sum最大。
求出最大的sum。
输入描述
第一行输入一个整数n。
第二行输入n个整数表示数组a。
1≤n≤10^5
11ai110^9
输出描述
输出一个整数表示答案。
示例1
输入
6
1 1 4 5 1 4
输出
27
说明
小美可以将4和5之间的加号改成乘号。
1+1+4*5+1+4=27
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main() {
int n;
cin >> n;
vector<long long> arr(n);
for (int i = 0; i < n; ++i) {
cin >> arr[i];
}
long long sum = 0;
long long maxProduct = 0;
for (int i = 0; i < n; ++i) {
sum += arr[i];
if (i < n - 1) {
maxProduct = max(maxProduct, arr[i] * arr[i + 1]);
}
}
if (maxProduct > 1) {
long long subtract = 0;
for (int i = 0; i < n - 1; ++i) {
if (arr[i] * arr[i + 1] == maxProduct) {
subtract = arr[i] + arr[i + 1];
break;
}
}
sum = sum - subtract + maxProduct;
}
cout << sum << endl;
return 0;
}
三
小美定义一个01串的权值为:每次操作选择一位取反,使得相邻字符都不
剩余60%内容,订阅专栏后可继续查看/也可单篇购买
本专栏主要发布嵌入式软件开发相关岗位2023年(2024届)的笔试真题(嵌入式软件开发、通用软件开发、C/C++软件开发、算法工程师、数据开发、测试开发等)主要是算法编程题,其中一些岗位笔试含有对应的选择题、填空题、简单题。
查看13道真题和解析