leetcode 1716 计算力扣银行的钱
2>循环计算不足一周的总钱数,第一天的钱数为week+1,依次递增+1,直到day天累加完,循环结束;<1>首先,计算不足一周的天数day,day=n%7;<1>week表示存够整周的周数,week=n/7;第i周存钱的钱数=28+(i-1)*7;分开计算,最后求二者的总和,即为所求。的方法来解决这个问题,将。
·
一、题目描述

二、解题思路
整体思路
可以采用模拟的方法来解决这个问题,将整周存钱量和不足一周的存钱量分开计算,最后求二者的总和,即为所求。
具体思路
(1)变量sum用于记录存钱的总数;
(2)首先,我们需要计算整周存钱量;
<1>week表示存够整周的周数,week=n/7;
<2>通过观察示例3我们可以知道,第一周存钱总数为(1+2+......+7)=28元,第二周比第一周多存7元,第三周比第二周多存7月,即第三周比第一周多存7*2元,所以可以得出规律:第i周存钱的钱数=28+(i-1)*7;
<3>所以,由等差数列求和可以算出:
week周存钱的总数为:28*week+(1+2+.....+week-1)*7=week*28+(week-1)*week*7/2;
(3)然后,我们记录不足一周的存钱量;
<1>首先,计算不足一周的天数day,day=n%7;
<2>循环计算不足一周的总钱数,第一天的钱数为week+1,依次递增+1,直到day天累加完,循环结束;
(4)最后,返回sum即为要求的总钱数;
三、代码实现
class Solution {
public:
int totalMoney(int n) {
int sum=0;
//1.计算整周存钱
int week=n/7;
sum+=(week*28+(week-1)*week*7/2);
//2.计算非整周存钱
int day=n%7;
for(int i=week+1;i<=week+day;i++)
sum+=i;
return sum;
}
};更多推荐
所有评论(0)