Welcome to Subscribe On Youtube

Formatted question description: https://leetcode.ca/all/1716.html

1716. Calculate Money in Leetcode Bank

Level

Easy

Description

Hercy wants to save money for his first car. He puts money in the Leetcode bank every day.

He starts by putting in $1 on Monday, the first day. Every day from Tuesday to Sunday, he will put in $1 more than the day before. On every subsequent Monday, he will put in $1 more than the previous Monday.

Given n, return the total amount of money he will have in the Leetcode bank at the end of the n-th day.

Example 1:

Input: n = 4

Output: 10

Explanation: After the 4th day, the total is 1 + 2 + 3 + 4 = 10.

Example 2:

Input: n = 10

Output: 37

Explanation: After the 10th day, the total is (1 + 2 + 3 + 4 + 5 + 6 + 7) + (2 + 3 + 4) = 37. Notice that on the 2nd Monday, Hercy only puts in $2.

Example 3:

Input: n = 20

Output: 96

Explanation: After the 20th day, the total is (1 + 2 + 3 + 4 + 5 + 6 + 7) + (2 + 3 + 4 + 5 + 6 + 7 + 8) + (3 + 4 + 5 + 6 + 7 + 8) = 96.

Constraints:

  • 1 <= n <= 1000

Solution

Loop over n days. For each day, obtain the amount of money put in the Leetcode bank, and calculate the total amount of money accordingly.

  • class Solution {
        public int totalMoney(int n) {
            int total = 0;
            int start = 0;
            int curr = 0;
            for (int i = 1; i <= n; i++) {
                if (i % 7 == 1) {
                    start++;
                    total += start;
                    curr = start;
                } else {
                    curr++;
                    total += curr;
                }
            }
            return total;
        }
    }
    
    ############
    
    class Solution {
        public int totalMoney(int n) {
            int a = n / 7, b = n % 7;
            return (28 + 28 + 7 * (a - 1)) * a / 2 + (a * 2 + b + 1) * b / 2;
        }
    }
    
  • // OJ: https://leetcode.com/problems/calculate-money-in-leetcode-bank/
    // Time: O(N)
    // Space: O(1)
    class Solution {
    public:
        int totalMoney(int n) {
            int s = 1, ans = 0;
            while (n > 0) {
                for (int i = 0; i < 7 && n-- > 0; ++i) ans += s + i;
                s++;
            }
            return ans;
        }
    };
    
  • class Solution:
        def totalMoney(self, n: int) -> int:
            a, b = divmod(n, 7)
            return (28 + 28 + 7 * (a - 1)) * a // 2 + (a * 2 + b + 1) * b // 2
    
    ############
    
    # 1716. Calculate Money in Leetcode Bank
    # https://leetcode.com/problems/calculate-money-in-leetcode-bank/
    
    class Solution:
        def totalMoney(self, n: int):
            res = times = 0
            c = 1
            
            for _ in range(n):
                if c == 8: 
                    c = 1
                    times += 1
                
                res += c + times
                c += 1
                
            return res
    
  • func totalMoney(n int) int {
    	a, b := n/7, n%7
    	return (28+28+7*(a-1))*a/2 + (a*2+b+1)*b/2
    }
    

All Problems

All Solutions