File size: 1,769 Bytes
76c3d25
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58

pi_1 = """
import time
def calculate(iterations, p1, p2):
    result = 1.0 
    for i in range(1, iterations+1):
        j = i * p1 - p2
        result -= (1/j)
        j = i * p1 + p2
        result += (1/j)
    return result
### USE Or MODIFY THIS CODE BELOW IF YOU NEED CODE EXECUTION CHECK -- EXAMPLE BELOW: 
start_time = time.time()
final_result = calculate(100_000_000, 4, 1) * 4
end_time = time.time()
print(f"Result: {final_result:.12f}")
print(f"Execution Time: {(end_time - start_time):.6f} seconds")
"""

pi_2 = """
import time
def lcg(seed, a=1664525, c=1013904223, m=2**32):
    value = seed
    while True:
        value = (a * value + c) % m
        yield value
def max_subarray_sum(n, seed, min_val, max_val):
    '''Generate n pseudo-random numbers using LCG and find max subarray sum.'''
    lcg_gen = lcg(seed)
    random_numbers = [next(lcg_gen) % (max_val - min_val + 1) + min_val for _ in range(n)]
    # Kadane’s Algorithm
    max_sum = float('-inf')
    current_sum = 0
    for x in random_numbers:
        current_sum = max(x, current_sum + x)
        max_sum = max(max_sum, current_sum)
    return max_sum, random_numbers
def total_max_subarray_sum(n, initial_seed, min_val, max_val):
    total_sum = 0
    lcg_gen = lcg(initial_seed)
    for _ in range(20):
        seed = next(lcg_gen)
        max_sum, _ = max_subarray_sum(n, seed, min_val, max_val)  # unpack tuple
        total_sum += max_sum
    return total_sum
# Parameters
n = 10000
initial_seed = 42
min_val = -10
max_val = 10
# Timing
start_time = time.time()
result = total_max_subarray_sum(n, initial_seed, min_val, max_val)
end_time = time.time()
print("Total Maximum Subarray Sum (20 runs):", result)
print("Execution Time: {:.6f} seconds".format(end_time - start_time))
"""