C6-05 · Mọi vị trí xuất hiện

Xem dạng PDF

Gửi bài giải

Điểm: 1,00
Giới hạn thời gian: 1.0s
Giới hạn bộ nhớ: 256M
Input: stdin
Output: stdout

Tác giả:
Nguồn bài:
Sách "Lập trình cơ sở với Python"
Dạng bài
Ngôn ngữ cho phép
Python

Đề

Viết hàm tim_tat_ca(ds, x) trả về danh sách các chỉ số mà tại đó ds có giá trị x (danh sách rỗng nếu không có), không dùng index().

Chương trình đọc dãy và số ~x~ như bài C6-03, rồi in mọi vị trí của ~x~ (đánh số từ 1) theo thứ tự tăng dần trên một dòng; nếu ~x~ không có trong dãy thì in -1.

Dữ liệu vào

  • Dòng 1: số nguyên ~n~.
  • Dòng 2: ~n~ số nguyên ~a_1, \ldots, a_n~, cách nhau một dấu cách.
  • Dòng 3: số nguyên ~x~.

Kết quả

Một dòng: các vị trí ~i~ (đánh số từ 1) mà ~a_i = x~, tăng dần, cách nhau một dấu cách; hoặc -1 nếu không có vị trí nào.

Ràng buộc

  • ~1 \le n \le 100~.
  • ~-10^9 \le a_i, x \le 10^9~.

Ví dụ

Dữ liệu vào:

5
3 7 3 1 3
3

Kết quả:

1 3 5

Giải thích ví dụ

tim_tat_ca([3, 7, 3, 1, 3], 3) trả về [0, 2, 4] (chỉ số Python). Cộng 1 cho mỗi chỉ số được vị trí 1 3 5.

Lưu ý

  • ds.index(x) luôn trả về lần xuất hiện đầu tiên — gọi nhiều lần không ra các vị trí sau; đó là lý do đề cấm index().
  • Duyệt theo chỉ số for i in range(len(ds)) hoặc enumerate; đừng viết for i in ds: rồi dùng ds[i] (nhầm giá trị với chỉ số).
  • Không có ~x~ thì phải in -1, không in dòng rỗng.
  • Nếu đọc dãy dưới dạng chuỗi thì so bằng ==, không dùng in giữa hai chuỗi: '3' in '13' là True (tìm chuỗi con), nên ~3~ sẽ bị coi là "có mặt" ở số ~13~.
  • Hệ thống chỉ chấm kết quả; việc viết hàm tim_tat_ca và không dùng index() do giảng viên xem khi chấm tay.

Nguồn trong sách: Bài C6-05, mục 6.12, giáo trình Lập trình cơ sở với Python — TS. Nguyễn Quốc Long · Mức: (**)


Đang tải...