美团嵌入式软件开发笔试
软件开发笔试汇总专栏: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%内容,订阅专栏后可继续查看/也可单篇购买
嵌入式软件笔试-24届真题汇总 文章被收录于专栏
本专栏主要发布嵌入式软件开发相关岗位2023年(2024届)的笔试真题(嵌入式软件开发、通用软件开发、C/C++软件开发、算法工程师、数据开发、测试开发等)主要是算法编程题,其中一些岗位笔试含有对应的选择题、填空题、简单题。