
题目概述
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
