一道特别的菜 2024-04-09 21:26 采纳率: 0%
浏览 10

大厂测开笔试题用python怎么写

大厂测开笔试题,这个用python怎么做呀:
小苯有n个小红书账号,新建一账号,希望新账号粉丝数达到x个。向旧帐号推荐一次新账号,新账号可得该旧帐号一半粉丝;在一个旧帐号多次(大于一次)推荐新账号,新账号可得该旧帐号全部粉丝。假设n个旧帐号的粉丝都不重叠,求小苯最少需要向几个旧帐号推荐新账号可达到目标粉丝数?
(两行输入:第一行两个值:n,x;第二行:n个账号的粉丝数,
一行输出:一个值:推荐的旧帐号数目)

img

  • 写回答

5条回答 默认 最新

  • 码农阿豪@新空间 优质创作者: Java、后端开发技术领域 2024-04-09 21:26
    关注
    让阿豪来帮你解答,本回答参考chatgpt3.5编写提供,如果还有疑问可以评论或留言
    问题分析: 本题需要求出小苯最少需要向几个旧帐号推荐新账号可达到目标粉丝数。具体思路是每次选择粉丝最多的账号进行推荐,直到新账号粉丝数达到目标值x即可。 具体实现: 1.首先读入n和x两个值。 2.然后读入n个账号的粉丝数,保存在一个列表中。 3.为了方便排序,我们将该列表从大到小排序。 4.利用一个循环依次计算推荐粉丝数,直到目标值x被达到为止。 实现代码如下:
    # 读入n和x
    n, x = map(int, input().split())
    # 读入n个账号的粉丝数并排序
    fans = sorted(list(map(int, input().split())), reverse=True)
    # 计算推荐的旧帐号数目
    count = 0
    cur_fans = 0  # 当前新账号的粉丝数
    for f in fans:
        # 如果新账号粉丝数已经达到目标值,跳出循环
        if cur_fans >= x:
            break
        # 否则,将当前账号推荐给新账号
        cur_fans += f // 2 + f % 2  # 新账号得到该旧帐号一半粉丝
        count += 1
        # 如果当前账号推荐多次可以得到全部粉丝,一次性将其全部推荐给新账号
        if f // 2 >= x - cur_fans:
            cur_fans += f // 2  # 新账号得到该旧帐号一半粉丝
            break
    # 输出结果
    print(count)
    

    测试案例: 输入:

    4 12
    9 7 6 4
    

    输出:

    2
    

    解释: 小苯有4个旧帐号,目标粉丝数为12,他需要向2个旧账号推荐新账号才能够达到目标粉丝数。具体推荐的数量可以依次为9和7,此时新账号粉丝数达到13,超过目标值,因此只需要推荐2次。

    评论

报告相同问题?

问题事件

  • 创建了问题 4月9日