2023 美团笔试题 0826

笔试时间:2023年08月26日 秋招

第一题

题目:小美种果树

小美在手机上种果树,只要成熟了就可以领到免费的水果了。小美每天可以给果树浇水,果树的成长值加x。同时也可以给果树施肥,两次施肥至少需要间隔 2 天,果树的成长值加 y。果树成长值达到z就成熟了。小美想知道,最少需要多少天可以领到免费的水果。

输入描述

一行三个整数x,y,z,分别表示浇水的成长值,施肥的成长值,果树成熟的成长值。1<=x,y,z<=10^9

输出描述

一行一个整数,表示最少需要多少天可以领到免费的水果。

样例输入

1 2 10

样例输出

6

说明

第一天施肥浇水,成长值为 3。

第二天浇水,成长值为 3 + 1 = 4。

第三天浇水,成长值为 4 + 1 = 5。

第四天施肥浇水,成长值为 5 + 3 = 8。

第五天浇水,成长值为 8 + 1 = 9。

第六天浇水,成长值为 9 + 1 = 10。

果树成熟了,可以领到免费水果了!

参考题解

模拟

C++:

#include <iostream>

using namespace std;

int main() {
    int x, y, z;
    cin >> x >> y >> z;

    int remainder = z % (3 * x + y);
    if (remainder == 0) {
        cout << (z / (3 * x + y)) * 3 << endl;
    } else {
        if (remainder < x + y) {
            cout << (z / (3 * x + y)) * 3 + 1 << endl;
        } else if (remainder < 2 * x + y) {
            cout << (z / (3 * x + y)) * 3 + 2 << endl;
        } else {
            cout << (z / (3 * x + y)) * 3 + 3 << endl;
        }
    }

    return 0;
}

Java:

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int x = sc.nextInt();
        int y = sc.nextInt();
        int z = sc.nextInt();

        int remainder = z % (3 * x + y);
        if (remainder == 0) {
            System.out.println((z / (3 * x + y)) * 3);
        } else {
            if (remainder < x + y) {
                System.out.println((z / (3 * x + y)) * 3 + 1);
            } else if (remainder < 2 * x + y) {
                System.out.println((z / (3 * x + y)) * 3 + 2);
            } else {
                System.out.println((z / (3 * x + y)) * 3 + 3);
            }
        }
    }
}

Python:

x,y,z = map(int, input().split())

yu = z % (3*x + y)
if yu == 0:
    print(z //(3*x + y) * 3)
else:
    if yu < x + y:
        print(z //(3*x + y) * 3 + 1)
    elif yu < 2*x + y:
        print(z // (3 * x + y) * 3 + 2)
    else:
        print(z // (3 * x + y) * 3 + 3)

第二题

题目:小美结账

大家一起吃饭的时候,总是小美先付钱,然后大家再把钱转给小美。现在小美有n张账单,每张账单记录了有k个人一起吃饭,以及吃饭的消费c,现在小美需要计算每个人需要转给小美多少钱。由于大家都比较喜欢整数,所以大家每张账单会转给小美[c/k],[x]表示对x进行上取整。

输入描述

第一行输入两个整数n,m(1<=n,m<=10^5)表示账单数和除小美外的总人数(分别用1到m表示)。

接下来2*n行,每 2行表示一张账单。对于每张账单:

第一行输入两个整数n,m(1<=n,m<=10^5)表示一起吃饭的人数,花费。

第二行输入k-1个整数,表示除小美外有哪些人一起吃饭。

数据保证,k的总和不超过2*10^5 。

输出描述

输出m个整数,表示每个人要给小美转账的总金额。

样例输入

2 3

3 10

1 2

4 8

1 2 3

样例输出

6 6 2

说明

第一张账单:第1、2个人都会给小美转4元

第二张账单:第1、2、3个人都会给小美转2元

因此答案为4+2=6,4+2=6,2

参考题解

模拟

C++:

#include <iostream>
#include <vector>
#include <cmath>

using namespace std;

int main() {
    int n, m;
    cin >> n >> m;

    vector<int> res(m + 1, 0);

    for (int i = 0; i < n; i++) {
        int k, c;
        cin >> k >> c;
        vector<int> people(k);

        for (int j = 0; j < k; j++) {
            cin >> people[j];
        }

        for (int p : people) {
            res[p] += ceil((double)c / k);
        }
    }

    for (int i = 1; i <= m; i++) {
        cout << res[i] << " ";
    }

    return 0;
}

Java:

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int m = sc.nextInt();

        int[] res = new int[m + 1];

        for (int i = 0; i < n; i++) {
            int k = sc.nextInt();
            int c = sc.nextInt();
            int[] people = new int[k];

            for (int j = 0; j < k; j++) {
                people[j] = sc.nextInt();
            }

            for (int p : people) {
                res[p] += Math.ceil((double) c / k);
            }
        }

        for (int i = 1; i <= m; i++) {
            System.out.print(res[i] + " ");
        }
    }
}

Python:

import math
n,m = map(int, input().split())

res = [0]*(m + 1)

for _ in range(n):
    k,c = map(int, input().split())
    people = [int(c) for c in input().split()]

    for p in people:
        res[p] += math.ceil(c/k)

for i in range(1, m+1):
    print(res[i], end=" ")

第三题

题目:小美的游戏

小美有一个长度为n的数组,她最多可以进行k次操作,每次操作如下:

1、选择两个整数i,j(1<=i<j<=n)

2、选择两个整数x,y,使得xy=aiaj

3、将ai替换为x,将aj替换为y

她希望最多进行k次操作之后,最后数组中的元素的总和尽可能大。

输入描述

一行两个整数n,k,表示数组的长度和操作的次数。

一行n个整数

剩余60%内容,订阅专栏后可继续查看/也可单篇购买

2023 秋招笔试题汇总解析 文章被收录于专栏

2023秋招各大笔试题汇总,c++,java,python多种语言分析,解答。

全部评论

相关推荐

不愿透露姓名的神秘牛友
昨天 17:10
点赞 评论 收藏
分享
鬼迹人途:你去投一投尚游游戏,服务器一面,第一个图算法,做完了给你一个策略题,你给出方案他就提出低概率问题,答不上当场给你挂
点赞 评论 收藏
分享
避坑恶心到我了大家好,今天我想跟大家聊聊我在成都千子成智能科技有限公司(以下简称千子成)的求职经历,希望能给大家一些参考。千子成的母公司是“同创主悦”,主要经营各种产品,比如菜刀、POS机、电话卡等等。听起来是不是有点像地推销售公司?没错,就是那种类型的公司。我当时刚毕业,急需一份临时工作,所以在BOSS上看到了千子成的招聘信息。他们承诺无责底薪5000元,还包住宿,这吸引了我。面试的时候,HR也说了同样的话,感觉挺靠谱的。于是,我满怀期待地等待结果。结果出来后,我通过了面试,第二天就收到了试岗通知。试岗的内容就是地推销售,公司划定一个区域,然后你就得见人就问,问店铺、问路人,一直问到他们有意向为止。如果他们有兴趣,你就得摇同事帮忙推动,促进成交。说说一天的工作安排吧。工作时间是从早上8:30到晚上18:30。早上7点有人叫你起床,收拾后去公司,然后唱歌跳舞(销售公司都这样),7:55早课(类似宣誓),8:05同事间联系销售话术,8:15分享销售技巧,8:30经理训话。9:20左右从公司下市场,公交、地铁、自行车自费。到了市场大概10点左右,开始地推工作。中午吃饭时间大约是12:00,公司附近的路边盖饭面馆店自费AA,吃饭时间大约40分钟左右。吃完饭后继续地推工作,没有所谓的固定中午午休时间。下午6点下班后返回公司,不能直接下班,需要与同事交流话术,经理讲话洗脑。正常情况下9点下班。整个上班的一天中,早上到公司就是站着的,到晚上下班前都是站着。每天步数2万步以上。公司员工没有自己的工位,百来号人挤在一个20平方米的空间里听经理洗脑。白天就在市场上奔波,公司的投入成本几乎只有租金和工资,没有中央空调。早上2小时,晚上加班2小时,纯蒸桑拿。没有任何福利,节假日也没有3倍工资之类的。偶尔会有冲的酸梅汤和西瓜什么的。公司的晋升路径也很有意思:新人—组长—领队—主管—副经理—经理。要求是业绩和团队人数,类似传销模式,把人留下来。新人不能加微信、不能吐槽公司、不能有负面情绪、不能谈恋爱、不能说累。在公司没有任何坐的地方,不能依墙而坐。早上吃早饭在公司外面的安全通道,未到上班时间还会让你吃快些不能磨蹭。总之就是想榨干你。复试的时候,带你的师傅会给你营造一个钱多事少离家近的工作氛围,吹嘘工资有多高、还能吹自己毕业于好大学。然后让你早点来公司、无偿加班、抓住你可能不会走的心思进一步压榨你。总之,大家在找工作的时候一定要擦亮眼睛,避免踩坑!———来自网友
qq乃乃好喝到咩噗茶:不要做没有专业门槛的工作
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
2
5
分享

创作者周榜

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