Sponsored
Sponsored
The iterative approach involves simulating each day in a loop, tracking both the weeks and individual days. We'll add the appropriate amount of money for each day based on the rules provided. This approach leverages basic looping constructs and conditionally increments the sums based on the day of the week.
Time Complexity: O(n), where n is the number of days. Each day is processed once.
Space Complexity: O(1), only a constant amount of space is used.
1#include <stdio.h>
2
3int totalMoney(int n) {
4 int total = 0;
5 int week = 0;
6 for (int i = 0; i < n; i++) {
7 if (i % 7 == 0) {
8 week++;
9 }
10 total += week + (i % 7);
11 }
12 return total;
13}
14
15int main() {
16 int n = 10;
17 printf("%d", totalMoney(n));
18 return 0;
19}
20
This C solution uses a for loop to iterate through each day until n
. It calculates the current 'week' number and the 'day of the week' using modulo arithmetic. It adds the appropriate amount for that day to a running total.
The mathematical approach seeks to minimize iterations by using formulae to directly compute sums based on weeks, leveraging arithmetic series properties. This method is typically more efficient and concise.
Time Complexity: O(1).
Space Complexity: O(1).
1using System;
2
public class Solution {
public int TotalMoney(int n) {
int weeks = n / 7;
int days = n % 7;
int total = (28 + 7 * weeks) * weeks / 2 + (weeks + 1) * days + days * (days - 1) / 2;
return total;
}
public static void Main() {
Solution sol = new Solution();
Console.WriteLine(sol.TotalMoney(10));
}
}
C# follows the established pattern of using mathematical formulas to avoid unnecessary iterations, leading to a constant time computation.