Câu hỏi:

23/01/2024 75

Xét bài toán: Đội Trúc Xanh gồm 3 bạn An, Thuỳ và Minh đứng đầu trong cuộc thi về ca dao, tục ngữ Việt Nam. Cách trao giải của Ban tổ chức cũng khá độc đáo. Trên bàn bày một dãy n túi kẹo, trên túi kẹo thứ i có ghi số nguyên ai, là số lượng kẹo trong túi (ai ≥ 0). Đội thắng cuộc được phép chọn các túi kẹo có số lượng chia hết cho 3. Đội Trúc Xanh quyết định sẽ chọn hết tất cả các túi có kẹo và được phép lấy. Sau đó từ mỗi túi, mỗi người ăn một chiếc kẹo. Phần kẹo còn lại được tập trung và chia đều để mỗi bạn mang về cho em ở nhà. Hãy xác định, mỗi bạn đã ăn bao nhiêu cái kẹo và mang về nhà bao nhiêu cái.

Media VietJack

Em hãy lập trình giải bài toán trên. Trước khi lập trình cần tóm tắt bài toán, xác định thuật toán và cách tổ chức dữ liệu.

Dữ liệu: Nhập vào từ thiết bị vào chuẩn:

- Dòng đầu tiên chứa số nguyên n (1105).

- Dòng thứ hai chứa n số nguyên a1, a2, …, an (0104, i = 1, 2, …, n)

Kết quả: Đưa ra thiết bị ra chuẩn hai số nguyên là số lượng kẹo tương ứng với số kẹo mỗi bạn đã ăn và số kẹo mỗi bạn mang về, các số đưa ra trên cùng một dòng.

Ví dụ:

 

Trả lời:

verified Giải bởi Vietjack

Tóm tắt bài toán (Mô hình toán học)

Cho:

- Số nguyên n, (1 \( \le n \le \)105) và n số nguyên a1, a2, .., an (0 ≤ ai  ≤104, i = 1, 2, .., n).

Yêu cầu:

- Xác định k là số lượng ai lớn hơn 0 và chia hết cho 3.

- Tính tổng (ai – 3)/3 với các ai tìm được.

Thuật toán và cách tổ chức dữ liệu

- Bước 1. Nhập dữ liệu vào (dùng kiểu danh sách cho dãy n số nguyên).

- Bước 2. Chuẩn bị tích luỹ số lượng và tổng: k = 0, s = 0.

- Bước 3. Duyệt với mọi i: Nếu ai > 0 và ai chia hết cho 3 thì tăng k và tích luỹ ai vào s.

- Bước 4. Đưa ra k và (s - 3k)/3.

Tham khảo chương trình sau:
Media VietJack

CÂU HỎI HOT CÙNG CHỦ ĐỀ

Câu 1:

Cho đoạn chương trình:

a=[1, 2, 3]

a.insert(0, 2)

print(a)

Sau khi thực hiện đoạn chương trình trên thì danh sách a có các phần tử:

Xem đáp án » 23/01/2024 272

Câu 2:

Cho đoạn lệnh sau:

x=20

if x%2==0:

x=x+10

else:

x=x-10;

Sau khi thực hiện đoạn chương trình x nhận giá trị bao nhiêu?

Xem đáp án » 23/01/2024 224

Câu 3:

Cho đoạn chương trình:

a=[1,2,3]

a.pop(2)

print(a)

Sau khi thực hiện đoạn chương trình trên thì danh sách a có các phần tử:

Xem đáp án » 23/01/2024 207

Câu 4:

Các lệnh mô tả hàm phải viết:

Xem đáp án » 23/01/2024 151

Câu 5:

Viết chương trình nhập vào từ bàn phím một danh sách các số nguyên, sau đó, thực hiện:

- Thay thế các phần tử âm bằng -1, phần tử dương bằng 1, giữ nguyên các phần tử giá trị 0.

- Đưa ra màn hình danh sách nhận được.

Xem đáp án » 23/01/2024 132

Câu 6:

Khi thực hiện tìm lỗi trong chương trình và kiểm thử, dữ liệu kiểm thử chia thành mấy nhóm?

Xem đáp án » 23/01/2024 127

Câu 7:

Thư viện math cung cấp:

Xem đáp án » 23/01/2024 112

Câu 8:

Hàm range(101, 1, -1) sẽ tạo ra:

Xem đáp án » 23/01/2024 108

Câu 9:

Để biết kích thước của danh sách ta dùng hàm:

Xem đáp án » 23/01/2024 108

Câu 10:

Câu lệnh sau cho kết quả là gì?

for i in range(10):

if i%2==1: print(i,end='' '')

Xem đáp án » 23/01/2024 104

Câu 11:

Hàm gcd(x,y) trả về:

Xem đáp án » 23/01/2024 101

Câu 12:

Để thay thế từ hoặc cụm từ bằng từ hoặc cụm từ khác, ta sử dụng hàm nào?

Xem đáp án » 23/01/2024 100

Câu 13:

Trong những câu sau, những câu nào đúng?

Vị trí có thể viết hàm trong chương trình là:

1) Viết ở đầu chương trình.

2) Viết bên trong một hàm khác.

3) Viết ở cuối chương trình.

4) Viết sau lời gọi tới nó trong chương trình chính.

5) Viết sau hàm có chứa lời gọi tới nó.

6) Viết trong chương trình chính, trước khi có lời gọi tới nó.

Xem đáp án » 23/01/2024 93

Câu 14:

Bước viết chương trình là:

Xem đáp án » 23/01/2024 92

Câu 15:

Tại sao phải tạo nhiều bộ dữ liệu vào khác nhau để kiểm thử chương trình?

Xem đáp án » 23/01/2024 91

Câu hỏi mới nhất

Xem thêm »
Xem thêm »