98.坏掉的时钟 - 图1

题目概述

题目详情(点我)

B同学有一个时钟,能够显示1-d,初始值为1,。
这个时钟每天显示的数字加一,特殊的,当某天显示的值为d时,第二天就会显示1。但是每个月的时间并不总是d天,因此B同学就要通过手动调整使得显示的时间正确,每次手调都可以使显示数字加一。现在给你n个月每月的天数,请你计算一下若是让时钟每天显示的数字都是正确的,他这n个月一共需要调多少次时钟。

输入月份数n(1 <= n <= 10^5)、时钟的最大显示时间d(1 <= d <= 10^4)和一个包含n个数的数组,第i个数表示第i个月有ai天(1 <= ai <= d)
输出使时钟正常显示一共要调整的次数

题解

算法知识

  • 枚举法

解题思路 - 互补求值

解题须知
n : 月份的个数
d : 时钟最多能够显示的天数
a[i] : 第i个月的天数 关键:a[i] < d
重点时钟每次只能加一天, 并且没法重置成1,要加到d之后才能变成1

上面看懂了的话, 这道题目就白给了。

  • 使用for循环遍历a中的n-1个月, 采用互补的思路 (d-a[i]) 求得每个月需要调整的次数,并将这些次数累加即可得到答案。

    • 为什么是n-1个月呢?

      • 因为最后一个月就不用调整时间啦。
  • 题目样例
    n = 3
    d = 5
    a[i] = [3, 4, 3]
    结果 = (5-3) + (5-4) = 3