Bài tập  /  Bài đang cần trả lời

Bạn hãy lập trình giúp Tèo kiểm tra kết quả tính tổng của M số nguyên liên tiếp xuất hiện trên màn hình bắt đầu từ số nguyên thứ T khi giám khảo yêu cầu

Sau khi cài đặt được phần mềm diệt virus, Tèo rất yên tâm khi lướt web tìm các thông tin
mà Tèo quan tâm. Tuy nhiên, hôm nay Tèo rất khó khăn khi bắt gặp một trò chơi trên mạng.
Một trò chơi yêu cầu người chơi phải nhớ nhanh các con số điện tử chạy trên màn hình lớn và
tính tổng các số hiện lên theo yêu cầu của cuộc chơi. Các số hiện ra trên màn hình là một dãy
số gồm N số nguyên không âm a1 , a2 , …, aN và cứ lặp đi lặp lại như thế (nghĩa là sau khi a i xuất
hiện vài giây đến lượt a i+1 xuất hiện, số xuất hiện sau aN là a 1 ).
Yêu cầu: Bạn hãy lập trình giúp Tèo kiểm tra kết quả tính tổng của M số nguyên liên tiếp xuất
hiện trên màn hình bắt đầu từ số nguyên thứ T khi giám khảo yêu cầu.
1 Xem trả lời
Hỏi chi tiết
158
Tham khảo câu trả lời từ Trợ lý ảo Lazi
Để giải quyết bài toán này, ta có thể sử dụng một mảng để lưu trữ dãy số nguyên a và tính tổng của M số nguyên liên tiếp bằng cách duyệt qua từng phần tử trong mảng.

Dưới đây là một đoạn mã Python để giải quyết bài toán này:

```python
def calculate_sum(a, T, M):
n = len(a)
total = 0

# Tính tổng M số nguyên liên tiếp
for i in range(T, T + M):
total += a[(i - 1) % n]

return total

# Test
a = [1, 2, 3, 4, 5]
T = 3
M = 4

result = calculate_sum(a, T, M)
print(result)
```

Kết quả của đoạn mã trên sẽ là 14, tức là tổng của 4 số nguyên liên tiếp từ số thứ 3 trong dãy số a là 3 + 4 + 5 + 1 = 14.

Bạn có thể thay đổi giá trị của biến a, T và M để kiểm tra với các trường hợp khác nhau.
0
0
Đức Anh Trần
10/09/2023 20:10:27
+5đ tặng
def compute_prefix_sum(a):
    prefix_sum = [0] * len(a)
    prefix_sum[0] = a[0]
    for i in range(1, len(a)):
        prefix_sum[i] = prefix_sum[i-1] + a[i]
    return prefix_sum

def sum_of_consecutive_numbers(a, T, M):
    N = len(a)
    prefix_sum = compute_prefix_sum(a)
    if T + M <= N:
        if T == 1:
            return prefix_sum[M-1]
        return prefix_sum[T+M-1] - prefix_sum[T-1]
    else:
        return (prefix_sum[N-1] - prefix_sum[T-1]) + prefix_sum[(T+M)%N-1]

# Test
a = [2, 3, 4, 5]
T = 3
M = 5
print(sum_of_consecutive_numbers(a, T, M))
 

Mở khóa để xem toàn bộ nội dung trả lời

(?)
Bạn đã đạt đến giới hạn của mình. Bằng cách Đăng ký tài khoản, bạn có thể xem toàn bộ nội dung trả lời
Cải thiện điểm số của bạn bằng cách đăng ký tài khoản Lazi.
Xem toàn bộ các câu trả lời, chat trực tiếp 1:1 với đội ngũ Gia sư Lazi bằng cách Đăng nhập tài khoản ngay bây giờ
Tôi đã có tài khoản? Đăng nhập

Bạn hỏi - Lazi trả lời

Bạn muốn biết điều gì?

GỬI CÂU HỎI
Học tập không giới hạn cùng học sinh cả nước và AI, sôi động, tích cực, trải nghiệm

Hôm nay bạn thế nào? Hãy nhấp vào một lựa chọn, nếu may mắn bạn sẽ được tặng 50.000 xu từ Lazi

Vui Buồn Bình thường
×
Trợ lý ảo Trợ lý ảo
×
Đấu trường tri thức | Lazi Quiz Challenge +500k
Gửi câu hỏi
×