Overflow in intermediate arithmetic
Wrong move: Temporary multiplications exceed integer bounds.
Usually fails on: Large inputs wrap around unexpectedly.
Fix: Use wider types, modular arithmetic, or rearranged operations.
Build confidence with an intuition-first walkthrough focused on math fundamentals.
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 nth 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 <= 1000Problem summary: 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 nth day.
Start with the most direct exhaustive search. That gives a correctness anchor before optimizing.
Pattern signal: Math
4
10
20
distribute-money-to-maximum-children)Source-backed implementations are provided below for direct study and interview prep.
// Accepted solution for LeetCode #1716: Calculate Money in Leetcode Bank
class Solution {
public int totalMoney(int n) {
int k = n / 7, b = n % 7;
int s1 = (28 + 28 + 7 * (k - 1)) * k / 2;
int s2 = (k + 1 + k + 1 + b - 1) * b / 2;
return s1 + s2;
}
}
// Accepted solution for LeetCode #1716: Calculate Money in Leetcode Bank
func totalMoney(n int) int {
k, b := n/7, n%7
s1 := (28 + 28 + 7*(k-1)) * k / 2
s2 := (k + 1 + k + 1 + b - 1) * b / 2
return s1 + s2
}
# Accepted solution for LeetCode #1716: Calculate Money in Leetcode Bank
class Solution:
def totalMoney(self, n: int) -> int:
k, b = divmod(n, 7)
s1 = (28 + 28 + 7 * (k - 1)) * k // 2
s2 = (k + 1 + k + 1 + b - 1) * b // 2
return s1 + s2
// Accepted solution for LeetCode #1716: Calculate Money in Leetcode Bank
struct Solution;
impl Solution {
fn total_money(n: i32) -> i32 {
let mut res = 0;
for i in 0..n {
res += (i % 7) + (i / 7) + 1;
}
res
}
}
#[test]
fn test() {
let n = 4;
let res = 10;
assert_eq!(Solution::total_money(n), res);
let n = 10;
let res = 37;
assert_eq!(Solution::total_money(n), res);
let n = 20;
let res = 96;
assert_eq!(Solution::total_money(n), res);
}
// Accepted solution for LeetCode #1716: Calculate Money in Leetcode Bank
function totalMoney(n: number): number {
const k = (n / 7) | 0;
const b = n % 7;
const s1 = (((28 + 28 + 7 * (k - 1)) * k) / 2) | 0;
const s2 = (((k + 1 + k + 1 + b - 1) * b) / 2) | 0;
return s1 + s2;
}
Use this to step through a reusable interview workflow for this problem.
Simulate the process step by step — multiply n times, check each number up to n, or iterate through all possibilities. Each step is O(1), but doing it n times gives O(n). No extra space needed since we just track running state.
Math problems often have a closed-form or O(log n) solution hidden behind an O(n) simulation. Modular arithmetic, fast exponentiation (repeated squaring), GCD (Euclidean algorithm), and number theory properties can dramatically reduce complexity.
Review these before coding to avoid predictable interview regressions.
Wrong move: Temporary multiplications exceed integer bounds.
Usually fails on: Large inputs wrap around unexpectedly.
Fix: Use wider types, modular arithmetic, or rearranged operations.