美团笔试题目2(2023-08-19)有点难 = =

1. 小美的外卖订单编号(AC)

#include <iostream>
using namespace std;

int main() {
    int q;
    cin >> q;
    int m, x;
    for (int i = 0; i < q; i++) {
        cin >> m >> x;
        int res = x % m;
        if (res == 0) {
            cout << m << endl;
        }
        else {
            cout << res << endl;
        }
    }
    return 0;
}
// 64 位输出请用 printf("%lld")

2. 小美的加法(AC)

#include <iostream>
#include <vector>
#include <iomanip>
using namespace std;

int main() {
    int n;
    cin >> n;
    vector<int> nums(n);
    for (int i = 0; i < n; i++) {
        cin >> nums[i];
    }
    unsigned long long res = 0;
    for (int i = 0; i < n; i++) {
        res += nums[i];
    }
    long long maxAdd = 0;
    long long tmp;
    for (int i = 0; i < n - 1; i++) {
        tmp = (long long)nums[i] * nums[i + 1] - nums[i] - nums[i + 1];
        if (tmp > maxAdd) {
            maxAdd = tmp;
        }
    }
    if (maxAdd > 0) {
        res += maxAdd;
    }
    cout << res;
    return 0;
}
// 64 位输出请用 printf("%lld")

3. 小美的01串翻转

#include <iostream>
#include <string>
#include <vector>
using namespace std;

int main() {
    string str;
    cin >> str;
    vector<bool> isChange(str.size());
    int numChange = 0;
    for (int i = 1; i < str.size(); i++) {
        if (str[i] == str[i - 1]) {
            str[i] = str[i] == '0' ? '1' : '0';
            isChange[i] = true;
            numChange++;
        }
    }
    if (numChange > str.size() / 2) {
        numChange = str.size() - numChange;
        for (int i = 0; i < isChange.size(); i++) {
            isChange[i] = isChange[i] == 1 ? 0 : 1;
        }
    }
    vector<int> dp(str.size());
    int res = 0;
    //for (int len = 2; len <= str.size(); len++) {
    //    dp[len-2] = isChange[i] == true ? 1 : 0;
    //    for (int i = 0; i <= str.size() - len; i++) {
    //        dp[i + len - 1] = dp[i + len - 2] + isChange[i + len - 1] == true ? 1 : 0;
    //        res += dp[i + len - 1];
    //    }
    //}
    for (int i = 0; i < str.size() - 1; i++) {
        dp[i] = isChange[i] == true ? 1 : 0;
        for (int len = 2; len <= str.size() - i; len++) {
            dp[i + len - 1] = dp[i + len - 2] + isChange[i + len - 1] == true ? 1 : 0;
            res += dp[i + len - 1];
        }
    }
    cout << res;
    return 0;
}
// 64 位输出请用 printf("%lld")

4. 小美的数组构造

#include <iostream>
#include <vector>

using namespace std;

void dfs(unsigned long long& res, int sum, vector<int>& numsa, vector<int>& numsb) {
    if (numsb.size() == numsa.size()) {
        if (sum == 0) {
            res += 1;
            if (res > 1000000007) {
                res = res % 1000000007;
            }
        }
        return;
    }
    //if (numsb.size() == numsa.size() - 1) {
    //    if (sum == numsa[numsb.size()]) {
    //        return;
    //    }
    //    else {
    //        numsb.push_back(sum);
    //        dfs(res, sum - sum, numsa, numsb);
    //        numsb.pop_back();
    //    }
    //}
    for (int i = 1; i <= sum - (numsa.size() - (numsb.size() + 1)); i++) {
        if (i == numsa[numsb.size()]) {
            continue;
        }
        else {
            numsb.push_back(i);
            dfs(res, sum - i, numsa, numsb);
            numsb.pop_back();
        }
    }
    return;
}

int main() {
    int n;
    cin >> n;
    vector<int> numsa(n);
    int sum = 0;
    for (int i = 0; i < n; i++) {
        cin >> numsa[i];
        sum += numsa[i];
    }

    unsigned long long res = 0;
    vector<int> numsb;
    dfs(res, sum, numsa, numsb);
    cout << res;
}
// 64 位输出请用 printf("%lld")

5. 小美的数组操作

不会 = =。

全部评论
做不出来题就用大声掩盖过去吧(无慈悲)
2 回复 分享
发布于 2023-08-19 22:30 湖北
请问第四题全过了吗?这题我都没有思路
1 回复 分享
发布于 2023-08-20 11:04 香港
大佬,你后面三道题目的代码,都是对的吗
点赞 回复 分享
发布于 2023-08-20 16:59 上海
114514是吧😆
点赞 回复 分享
发布于 2023-08-19 21:46 广东
第三题A了么
点赞 回复 分享
发布于 2023-08-19 21:30 天津

相关推荐

关于我大学本科四年,想了很多,但还是不知道该怎么动笔&nbsp;“大学四年,是我从懵懂少年走向职场青年的转折期。这一路跌跌撞撞,有迷茫,有遗憾,也有成长和决心。”&nbsp;大一刚进来时仍然有高中那股学习劲,经常一个人去图书馆学高等数学,但后面劲头一过便开始在宿舍开启躺平生活(现在想想那段时间真的很爽,无忧无虑)。由于大一担任班干部,所以经常要跟其他班的班干部交流,在此期间认识了隔壁班的一位女生,短发而很可爱,因为很多团建还有比赛都是我们两班一起参加的,而且我和她都是负责人,所以交集很多,后面慢慢地彼此对产生了好感,所以在大一刚开学的2个月后,我们在一起了,彼此之前都是初恋。但当时我真的是太太太直男了,对感情的想...
真烦好烦真烦:骗哥们可以,别把你自己也骗到了就行。哥们被你骗了真无所谓的,打个哈哈就过了。但希望你打完这段话后擦一下眼角,别让眼泪掉在手机屏幕上了就行。你说的这些话,哥们信一下也是没什么的。还能让你有个心里安慰,但这种话说出来骗骗兄弟就差不多得了,哥们信你一下也不会少块肉,但是你别搞得自己也当真了就行。哥们被你骗一下是真无所谓的,兄弟笑笑也就过去了。真不是哥们想要破你防,你擦擦眼泪好好想想,除了兄弟谁还会信你这些话?
点赞 评论 收藏
分享
秋盈丶:后续:我在宿舍群里和大学同学分享了这事儿,我好兄弟气不过把他挂到某脉上了,10w+阅读量几百条评论,直接干成精品贴子,爽
点赞 评论 收藏
分享
评论
7
53
分享

创作者周榜

更多
牛客网
牛客企业服务