Hercy 想要为购买第一辆车存钱。他 每天 都往力扣银行里存钱。
最开始,他在周一的时候存入 1 块钱。从周二到周日,他每天都比前一天多存入 1 块钱。在接下来每一个周一,他都会比 前一个周一 多存入 1 块钱。
给你 n ,请你返回在第 n 天结束的时候他在力扣银行总共存了多少块钱。
class Solution {
public:
int totalMoney(int n) {
if(n <= 7){
return (1+n)*n/2;
}else{
return n/7*28+(0+n/7-1)*(n/7)*7/2+(1+n%7)*(n%7)/2+(n/7)*(n%7);
}
}
};
方法:
小于7等差数列1开始到n结束总共n个数,(1+n)*n/2
大于7先考虑整周,一周28也就是n/7*28;
然后考虑整周的增量,第1周增加0,第2周增加7,第3周14,(0+n/7-1) (n/7)7/2
考虑余下的天数,从1到n%7总共n%7个数,(1+n%7)*(n%7)/2
然后考虑余下的天数的增量,第1周后的余数增加1 (n%7),第2周增加2(n%7),第3周3 (n%7),(n/7)(n%7)