题目
类型:数学
解题思路
每个完整周的起始日金额相比上周起始日金额多 1,同时周内每日金额递增 1,因此相邻完整周的金额之和也满足「等差」性质,可直接使用「等差数列求和」公式 O(1) 求解完整周部分的金额之和;最后一周(若有)的金额也是同理。
代码
class Solution {
public int totalMoney(int n) {
int a = n / 7, b = n % 7;
int a1 = (1 + 7) * 7 / 2, an = (a + (a + 6)) * 7 / 2;
int s1 = (a1 + an) * a / 2;
a++;
int s2 = (a + (a + b - 1)) * b / 2;
return s1 + s2;
}
}