Giả sử bạn gửi 1Rs vào ngân hàng ngày thứ nhất (Thứ Hai). Mỗi ngày tiếp theo từ Thứ Ba đến Chủ Nhật, bạn gửi thêm 1Rs so với ngày trước. Và mỗi Thứ Hai sau đó, bạn gửi thêm 1Rs so với Thứ Hai trước. Cho số n, tìm tổng tiền trong ngân hàng vào cuối ngày thứ n.
Ví dụ: n = 17, kết quả là 75 vì:
- Tuần 1: 1+2+3+4+5+6+7 = 28
- Tuần 2: 2+3+4+5+6+7+8 = 35
- Tuần 3 (3 ngày): 3+4+5 = 12
- Tổng = 75
Giải thuật
s := 28(tổng tuần đầu)res := 0- Nếu
n > 7:res := sdiv := n // 7- For
itừ 1 đếndiv - 1:res += s + 7*i rem := n % 7- For
itừ 1 đếnrem:res += i + div
- Ngược lại: For
itừ 1 đếnn:res += i - Trả về
res
Ví dụ (Python)
def solve(n):
s = 28
res = 0
if n > 7:
res = s
div = n // 7
for i in range(1, div):
res += s + 7 * i
rem = n % 7
for i in range(1, rem + 1):
res += i + div
else:
for i in range(1, n + 1):
res += i
return res
n = 17
print(solve(n))
Input
17
Output
75