文章目录
提示:以下是本篇文章正文内容,下面案例可供参考
一、题目分析
题目:Hercy 想要为购买第一辆车存钱。他每天都往力扣银行里存钱。
最开始,他在周一的时候存入 1 块钱。从周二到周日,他每天都比前一天多存入 1 块钱。在接下来每一个周一,他都会比前一个周一多存入 1
块钱。
给你 n ,请你返回在第 n 天结束的时候他在力扣银行总共存了多少块钱
原题链接:计算力扣银行的钱
审题可以得知第一周周一存 1 块钱,接下来每周一,都会比前一个周一多存 1 块钱,在一周内,每天比前一天多存 1 块钱,于是我们可以假设有a个整周,非完整周有b天,利用每整周相差7块钱可得到等差数列,整周所有钱数加上非完整周的钱数即为总钱数。
二、解题
1.方法一:等差数列
思路:等差数列求整数周所有钱数,加上非整数周钱数即为结果,返回值为整数。
class Solution:
def totalMoney(self, n: int) -> int:
a = n // 7 # a为整周数
b = n % 7 # b为非整周天数
a1 = (1 + 7)*7/2 # 第一周钱数a1
an = (a + (a + 6))*7/2 # 最后一个整周钱数an
s1 = (a1 + an)*a/2 # 整周总钱数
s2 = (a+1 + (a+b))*b/2 # 非整周钱数
return int(s1 + s2) # 获得结果
如果大家有其他更好的方法,可以在评论区评论,或者私聊我哦!