软件开发笔试汇总专栏: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串的权值为:每次操作选择一位取反,使得相邻字符都不
点赞 0
评论 1
全部评论

相关推荐

不愿透露姓名的神秘牛友
07-30 11:29
真的很糟糕:都不当人了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务