2401_84179513 2024-06-01 15:10 采纳率: 25%
浏览 0

c语言程序设计的一个设计

题目描述 

众所周知,《编译原理》是计算机专业的一门难度极高的课程,zwh希望自己能够驾驭这门课程,因此友好的他会在课前向朋友们传达友好的鼓励与邀请:“Love You Guys!”(LYG!)。对编译原理课程有一个初始熟练度XX,但由于他每天都要LYG,因此他每天都会遗忘ZZ点熟练度,对于ZZ的取值,在第一天是aa,第二天为a+ba+b,第三天为a+2\times ba+2×b,以此类推,第ii 天就会遗忘a+(i-1)\times ba+(i−1)×b点熟练度。

但是频繁的遗忘使很困惑,于是他会选择复习一下编译原理,能够增加YY点熟练度,但需要注意,zwh已经无法达到最初的水平了,也就是指,后续的熟练度加了YY后,若超过初始熟练度XX,则会维持在XX不变。

请你帮助他,他想知道再这样下去,第几天后他就会把编译原理忘了(当天结束后,熟练度为负数)然后惨烈挂科。

输入描述:

输入一行:四个正整数X,Y,a,bX,Y,a,b,含义如题意所示。(1\le X,Y,a,b \le 10^{6}1≤X,Y,a,b≤106)

输出描述:

输出一个正整数,代表最早的挂科时间点。

示例1

输入

复制

10 3 1 2

输出

复制

5

说明

第一天:遗忘1点熟练度,通过复习恢复3点熟练度,最后熟练度为10-1+3=12,但这超过了初始熟练度,最终熟练度仍为10。

第二天:遗忘3点熟练度,通过复习恢复3点熟练度,最后熟练度为10-3+3=10。

第三天:遗忘5点熟练度,通过复习恢复3点熟练度,最后熟练度为10-5+3=8。

第四天:遗忘7点熟练度,通过复习恢复3点熟练度,最后熟练度为8-7+3=4。

第五天:遗忘9点熟练度,通过复习恢复3点熟练度,最后熟练度为4-9+3=-2。熟练度为负数,挂科。

  • 写回答

3条回答 默认 最新

  • Kwan的解忧杂货铺 2024-06-01 15:11
    关注

    下午好🌅🌅🌅
    本答案参考ChatGPT-3.5

    这是一个动态规划问题,我们可以使用一个变量来记录当前的熟练度,并根据题目描述的遗忘和复习规则进行更新。

    def find_day(X, Y, a, b):
        # 初始化熟练度为X,第一天不会遗忘
        dp = [X]
        
        # 计算遗忘和复习后的熟练度
        for i in range(1, 10**6 + 1):  # 假设最坏情况是需要10^6天才会忘完
            dp.append(dp[-1] - a * (i - 1) + b * (i * (i - 1)) // 2)
            if dp[-1] < X:  # 如果复习后熟练度小于初始熟练度,则需要复习
                dp[-1] += Y
                if dp[-1] > X:  # 如果复习后超过初始熟练度,保持在初始熟练度
                    dp[-1] = X
    
        # 返回最早挂科的时间(即熟练度为负数的天数)
        return dp.index(-1) if -1 in dp else -1
    
    # 示例
    X, Y, a, b = 10, 3, 1, 2
    print(find_day(X, Y, a, b))  # 输出:5
    

    这个代码首先初始化一个列表 dp 来存储每天的熟练度。然后,从第二天开始,每次计算遗忘后的熟练度并添加到列表中。如果遗忘后的熟练度小于初始熟练度,就加上复习提升的熟练度。如果此时熟练度仍然小于初始熟练度,就保持在初始熟练度。最后,搜索列表中第一个小于0的元素,表示挂科的天数,如果没有找到则返回-1(表示永远不挂科)。

    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 6月1日

悬赏问题

  • ¥15 matlab数据降噪处理,提高数据的可信度,确保峰值信号的不损失?
  • ¥15 怎么看我在bios每次修改的日志
  • ¥15 python+mysql图书管理系统
  • ¥15 Questasim Error: (vcom-13)
  • ¥15 船舶旋回实验matlab
  • ¥30 SQL 数组,游标,递归覆盖原值
  • ¥15 为什么我的数据接收的那么慢呀有没有完整的 hal 库并 代码呀有的话能不能发我一份并且我用 printf 函数显示处理之后的数据,用 debug 就不能运行了呢
  • ¥20 gitlab 中文路径,无法下载
  • ¥15 用动态规划算法均分纸牌
  • ¥30 udp socket,bind 0.0.0.0 ,如何自动选取用户访问的服务器IP来回复数据