# 前言声明
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/calculate-money-in-leetcode-bank
# 计算力扣银行的钱
- Hercy 想要为购买第一辆车存钱。他 每天 都往力扣银行里存钱。
- 最开始,他在周一的时候存入 1 块钱。从周二到周日,他每天都比前一天多存入 1 块钱。在接下来每一个周一,他都会比 前一个周一 多存入 1 块钱。
- 给你 n 天,请你返回在第 n 天结束的时候他在力扣银行总共存了多少块钱。
# Example
Example 1:
输入:n = 4 | |
输出:10 | |
解释:第 4 天后,总额为 1 + 2 + 3 + 4 = 10 。 |
Example 2:
输入:n = 10 | |
输出:37 | |
解释:第 10 天后,总额为 (1 + 2 + 3 + 4 + 5 + 6 + 7) + (2 + 3 + 4) = 37 。注意到第二个星期一,Hercy 存入 2 块钱。 |
Example 3:
输入:n = 20 | |
输出:96 | |
解释:第 20 天后,总额为 (1 + 2 + 3 + 4 + 5 + 6 + 7) + (2 + 3 + 4 + 5 + 6 + 7 + 8) + (3 + 4 + 5 + 6 + 7 + 8) = 96 。 |
提示:
1 <= n <= 1000
# Solving Ideas
const totalMoney = function (n) { | |
// 每周一的钱 | |
let WeekStartMoney = 1 | |
// 一周 0-6 表示 配合 WeekStartMoney 实现每天递增一元和每周一起始钱加 1 | |
let dayMoney = 0 | |
// 保存结果 | |
let res = 0 | |
for (let i = 0; i < n; i++){ | |
res += WeekStartMoney + dayMoney | |
++dayMoney | |
// 如果等于 7 代表是第二个星期 | |
if (dayMoney === 7) { | |
// 起始钱 + 1 | |
WeekStartMoney++ | |
// 初始为周一 | |
dayMoney = 0 | |
} | |
} | |
return res | |
} | |
totalMoney(14) // 63 | |
totalMoney(20) // 96 |