LeetCode 1716 计算力扣银行的钱[数学 前缀和] HERODING的LeetCode之路
Posted HERODING23
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode 1716 计算力扣银行的钱[数学 前缀和] HERODING的LeetCode之路相关的知识,希望对你有一定的参考价值。
解题思路:
这道题本质是寻找其数学规律,首先计算好第一周的总存款,然后用前缀和的方法计算第一周到周几的总存款,便于后序操作。然后计算周数,以及最后余几天,由于每周存钱规律满足等差数列,所以利用等差数列求和公式可以直接得到达到整数周完整的存款,剩下的空余天再根据我们计算好的前缀和加上随着周数变化增加的存款,代码如下:
class Solution
public:
int totalMoney(int n)
int save = 28;
int days[7] = 1, 3, 6, 10, 15, 21, 28;
int num = n / 7;
int rest = n % 7;
return rest == 0 ? num * save + (num * (num - 1)) * 7 / 2 : num * save + (num * (num - 1)) * 7 / 2 + days[rest - 1] + num * rest;
;
以上是关于LeetCode 1716 计算力扣银行的钱[数学 前缀和] HERODING的LeetCode之路的主要内容,如果未能解决你的问题,请参考以下文章