Môn Tin họcQuản lý học tập Tin học

Tra cứu ngày đạt mốc bước chân trên ứng dụng sức khoẻ

Lớp 11Lập trìnhpythonGiải quyết vấn đề với máy tínhVận dụng

Thang điểm 10 · 6 test case chấm tự động · 3 tiêu chí chấm

Cho dãy A gồm n số nguyên là số bước chân đo được trong n ngày, dãy đã được sắp xếp tăng dần (có thể có nhiều ngày trùng số bước chân). Cho số nguyên K là mốc mục tiêu bước chân. Em hãy viết chương trình tìm ra tất cả các ngày (đếm từ 1) có số bước chân đúng bằng K.

Gợi ý thiết kế thuật toán: dùng tìm kiếm nhị phân để tìm nhanh một vị trí bất kì có giá trị bằng K trong O(log n) bước; sau đó vì dãy đã sắp xếp nên các phần tử bằng K (nếu có nhiều) sẽ nằm liền kề nhau — mở rộng sang bên trái và bên phải từ vị trí vừa tìm được để thu thập đủ tất cả các ngày đạt mốc.

Định dạng vào: dòng 1 là số nguyên n; dòng 2 gồm n số nguyên tăng dần cách nhau bởi khoảng trắng (số bước chân từng ngày); dòng 3 là số nguyên K.

Định dạng ra: in ra các số thứ tự ngày (đếm từ 1) đạt đúng mốc K theo thứ tự tăng dần, cách nhau bởi một khoảng trắng, trên một dòng; nếu không có ngày nào đạt mốc thì in ra Không đạt mốc.

InputOutputGiải thích
12
3000 4500 4500 5000 5200 6000 6000 6000 7000 7500 8000 9000
6000
6 7 8Ba ngày liền nhau (chỉ số 5,6,7 tính từ 0, tức ngày 6,7,8) có đúng 6000 bước
12
3000 4500 4500 5000 5200 6000 6000 6000 7000 7500 8000 9000
9999
Không đạt mốcKhông có ngày nào đạt đúng 9999 bước
#tìm kiếm nhị phân#mở rộng hai bên#kết hợp thuật toán#dãy đã sắp xếp#category:phat_trien_tu_duy#difficulty:applying

Giáo viên giao bài này cho lớp, học sinh nộp bài trực tuyến và được chấm tự động.

Giáo viên đăng nhập để giao bài