美团嵌入式软件开发笔试

软件开发笔试汇总专栏https://blog.nowcoder.net/zhuanlan/0oDWVm

题型:4道编程题+1道选择题题

美团商家的订单发起时,订单编号最开始从1开始,后续每发起一个订单,订单编号便在上一订单编号的基础上+1。为了防止订单号过大,商家还可以设置一个编号上限m,当订单编号超过m,将又从1开始始编号。

小美想知道,当订单编号上限为m时,第x个订单编号是多少?将有q次询问。

输入描述

第一行输入一个整数q(1q50000)

接下来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=a1a2+...+an .

小美可以使用一次魔法(也可以不使用),将其中一个加号变成乘号,使得sum最大。

求出最大的sum

输入描述

第一行输入一个整数n

第二行输入n个整数表示数组a

1n10^5

11ai110^9

输出描述

输出一个整数表示答案。

示例1

输入

6

1 1 4 5 1 4

输出

27

说明

小美可以将45之间的加号改成乘号。

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++软件开发、算法工程师、数据开发、测试开发等)主要是算法编程题,其中一些岗位笔试含有对应的选择题、填空题、简单题。

全部评论

相关推荐

点赞 14 评论
分享
牛客网
牛客企业服务