1. Trang chủ
  2. » Giáo Dục - Đào Tạo

Giải một số bài toán bằng phương pháp tìm kiếm nhị phân giúp nâng cao hiệu quả bồi dưỡng học sinh giỏi

25 135 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 25
Dung lượng 185,5 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

SỞ GIÁO DỤC VÀ ĐÀO TẠO THANH HOÁ TRƯỜNG THPT TRIỆU SƠN 3 SÁNG KIẾN KINH NGHIỆM GIẢI MỘT SỐ BÀI TOÁN BẰNG PHƯƠNG PHÁP TÌM KIẾM NHỊ PHÂN GIÚP NÂNG CAO HIỆU QUẢ BỒI DƯỠNG HỌC SINH GIỎI Ngườ

Trang 1

SỞ GIÁO DỤC VÀ ĐÀO TẠO THANH HOÁ

TRƯỜNG THPT TRIỆU SƠN 3

SÁNG KIẾN KINH NGHIỆM

GIẢI MỘT SỐ BÀI TOÁN BẰNG PHƯƠNG PHÁP TÌM KIẾM NHỊ PHÂN GIÚP NÂNG CAO HIỆU QUẢ BỒI

DƯỠNG HỌC SINH GIỎI

Người thực hiện: Lê Thị Quỳnh Chức vụ: Giáo viên

Đơn vị công tác: Trường THPT Triệu Sơn 3 SKKN thuộc lĩnh vực (môn): Tin học

THANH HOÁ NĂM 2019

Trang 2

MỤC LỤC

1 MỞ ĐẦU 1

1.1 Lý do chọn đề tài 1

1.2 Mục đích nghiên cứu 1

1.3 Đối tượng nghiên cứu 1

1.4 Phương pháp nghiên cứu 1

2 NỘI DUNG 3

2.1 Cơ sở lý luận 3

2.1.1 Nội dung thuật toán 3

2.1.2 Nội dung chương trình bằng NNLT PASCAL 3

2.1.3 Độ phức tạp thuật toán 3

2.2 Thực trạng của vấn đề cần giải quyết 4

2.3 Các giải pháp giải quyết vấn đề 4

2.3.1 Giải bài toán từ “góc nhìn” tìm kiếm nhị phân 4

2.3.2 Phân loại các dạng thực hiện tìm kiếm nhị phân 14

2.3.2.1 Dạng 1: Tìm kiếm nhị phân trên dãy (mảng) có sẵn 14

2.3.2.2 Dạng 2: Tìm kiếm nhị phân theo kết quả 17

2.4 Hiệu quả của sáng kiến kinh nghiệm 19

3 KẾT LUẬN, KIẾN NGHỊ 20

3.1 Kết luận 20

3.2 Kiến nghị 20

DANH MỤC 22

Trang 4

1 MỞ ĐẦU 1.1 Lý do chọn đề tài.

Trong các đề thi chọn học sinh giỏi (HSG) của các trường THPT trong Tỉnh,hoặc đề thi HSG cấp Tỉnh những năm gần đây, có những bài toán kích thướclớn, nếu giải bằng cách thông thường thì sẽ không tối ưu về mặt thời gian, hoặc

có thể không vét hết các trường hợp xảy ra của bài toán Tuy nhiên, nếu áp dụngphương pháp tìm kiếm nhị phân (thường gọi là chặt nhị phân) thì sẽ giải quyếttốt được tất cả các trường hợp trên

Quá trình dạy tại các lớp mũi nhọn và ôn thi HSG cấp Tỉnh, tôi đã vận dụngphương pháp tìm kiếm nhị phân để giúp các em nhìn nhận một bài toán từ nhiềugóc độ khác nhau Qua đó có thể dễ dàng nhận ra việc áp dụng phương pháp này

để giải bài toán nào đó Vì vậy, tôi đã chọn đề tài “Giải một số bài toán bằng phương pháp tìm kiếm nhị phân giúp nâng cao hiệu quả bồi dưỡng học sinh giỏi” làm sáng kiến kinh nghiệm của mình trong năm học 2018 – 2019 để trao

đổi với đồng nghiệp Đây là một phương pháp tôi đã thực hiện rất hiệu quả tạingôi trường THPT Triệu Sơn 3, đồng thời cũng hy vọng cách làm này sẽ đượchoàn thiện, bổ sung và nhân rộng trong các trường THPT khác trong Tỉnh

1.2 Mục đích nghiên cứu.

Với lý do chọn đề tài đã trình bày ở trên, tôi mong muốn đề tài của mình sẽgiúp đỡ phần nào các khó khăn khi nhận dạng bài toán tìm kiếm nhị phân trongquá trình ôn luyện học sinh giỏi

- Khảo sát, đánh giá được thực trạng việc bồi dưỡng học sinh tham gia thi học sinh giỏi cấp Tỉnh của trường Trung học phổ thông Triệu Sơn 3

- Nhìn nhận, giải quyết một số bài toán bằng phương pháp tìm kiếm nhị phân

1.3 Đối tượng nghiên cứu.

- Thuật toán tìm kiếm nhị phân

- Một số bài tập thi HSG các cấp

- Sự tư duy, ý thức học tập của học sinh ôn thi học sinh giỏi

1.4 Phương pháp nghiên cứu.

Để thực hiện đề tài này, tôi đã sử dụng các phương pháp:

- Phương pháp nghiên cứu xây dựng cơ sở lí thuyết: Cơ sở lý thuyết là phươngpháp tìm kiếm nhị phân, một số bài toán trong các đề thi các cấp; Sự hứng thútrong giờ học môn Tin học và ý thức tự học của học sinh đối với môn học

Trang 5

- Phương pháp điều tra khảo sát thực tế, thu thập thông tin: Thông qua kết quảđiều tra mức độ hiểu về thuật toán tìm kiếm nhị phân của học sinh lớp 11 trườngTHPT Triệu Sơn 3.

- Phương pháp thống kê, xử lý số liệu: Trên cơ sở các kết quả đạt được, thống

kê các số liệu, xử lí số liệu để so sánh giữa nhóm thực nghiệm và đối chứng

Trang 6

2 NỘI DUNG 2.1 Cơ sở lý luận.

Cho dãy K gồm N phần tử đã được sắp xếp theo thứ tự không giảm Tìmxem trong dãy có giá trị nào bằng X hay không?

2.1.1 Nội dung thuật toán.

Giả sử cần tìm X trong đoạn K[L R] (L  R), trước hết ta xét khóa nằmgiữa đoạn K[Mid] với Mid = (L + R) div 2;

 Nếu K[Mid] < X nghĩa là đoạn K[L Mid] chứa toàn khóa < X.khi đó ta tiến hành tìm kiếm X trên đoạn K[Mid+1 R]

 Nếu K[Mid] > X nghĩa là đoạn K[L Mid] chứa toàn khóa > X.khi đó ta tiến hành tìm kiếm X trên đoạn K[R Mid - 1]

 Nếu K[Mid] = X thì tìm kiếm thành công (kết thúc quá trình tìmkiếm)

Quá trình tìm kiếm sẽ thất bại nếu một bước nào đó đoạn tìm kiếm là rỗngtức là L > R

2.1.2 Nội dung chương trình bằng NNLT PASCAL.

Function TK_NhiPhan(X: Key): integer;

var L,R,Mid:integer;

Begin

L := 1; R := N;

While (L <= R) do Begin

Mid := (L + R) div 2;

if K[Mid] = X then Begin

TK_NhiPhan := Mid;

exit;

end else if K[Mid] < X then L := Mid + 1

Trang 7

2.2 Thực trạng của vấn đề cần giải quyết

Nhiều học sinh có thể hiểu thuật toán tìm kiếm nhị phân nhưng việc vậndụng để giải một bài toán bằng phương pháp này thì thực sự chưa hiệu quả, chưanhìn nhận được cách giải bài toán bằng phương pháp tìm kiếm nhị phân, nhất làcác bài toán dạng tìm kiếm nhị phân “ẩn” hay nói cách khác là dạng tìm kiếmnhị phân theo kết quả

Trong nội dung thi học sinh giỏi Tin học các cấp, có nhiều bài thường cóthể giải với nhiều cách khác nhau, trong các cách đó thì không phải cách nàocũng có thể giải quyết hết các bộ dữ liệu giới hạn của bài toán, việc hướng đếngiải quyết hết các test từ bé đến lớn với thời gian đảm bảo yêu cầu (thường là1s) là vấn đề không phải học sinh nào cũng có thể làm được Một trong nhữngphương pháp giúp học sinh giải được khá nhiều bài ở mức độ vừa và khó là tìmkiếm nhị phân

2.3 Các giải pháp giải quyết vấn đề.

2.3.1 Giải bài toán từ “góc nhìn” tìm kiếm nhị phân.

Mỗi bài toán nêu ra trong đề tài này là những ví dụ cho việc có thể thựchiện giải quyết bài toán bằng nhiều cách, trong đó có thể sử dụng phương pháptìm kiếm nhị phân Đó cũng là cách có thể thực hiện được với bộ dữ liệu từ béđến lớn theo yêu cầu giới hạn của bài toán Trong đề tài này, tôi chỉ nêu ra cáccách giải theo ý chủ quan, vẫn có thể còn những cách làm khác mà bản thânchưa biết đến, với những cách làm khác được nêu ra, tôi chỉ nêu cách làm, còntheo cách tìm kiếm nhị phân thì tôi sẽ nêu cách làm và code bài bằng ngôn ngữlập trình Pascal

Bài toán 1 : Taxi (Nguồn: Đề bài thi HSG cấp Tỉnh Thanh Hóa- năm học

2017-2018).

Trong dịp nghỉ hè các bạn học sinh lớp 12 dự định tổ chức dã ngoại đếnbiển Sầm Sơn và sẽ đi bằng taxi Các bạn được chia thành n nhóm, nhóm thứ igồm Si bạn (1 ≤ Si ≤ 4) và mỗi chiếc taxi chở tối đa 4 hành khách Vậy lớp 12cần thuê ít nhất bao nhiêu chiếc taxi để chở các nhóm đi, với điều kiện là cácbạn trong nhóm phải ngồi chung taxi (một taxi có thể chở một nhóm trở lên)

Dữ liệu vào: Từ tệp văn bản TAXI.INP gồm:

- Dòng đầu chứa số nguyên n (1 ≤ n ≤ 105) (số lượng các nhóm học sinh)

- Dòng số 2 chứa dãy số nguyên S1, S2, , Sn (1 ≤ Si ≤ 4) Các số nguyên cáchnhau bởi dấu cách với Si là số học sinh trong nhóm thứ i

Trang 8

Dữ liệu ra: Ghi ra tệp văn bản TAXI.OUT là 1 số nguyên duy nhất là số lượng

tối thiểu xe taxi cần thiết để chở tất cả học sinh đến nơi

Bài này có thể giải theo hai cách như sau:

Cách 1: Tư duy theo kiến thức toán học Kết quả bài toán là tổ hợp của các

trường hợp có thể xảy ra của bài toán Theo cách làm này, học sinh khó lấy hếtcác test của bài vì nếu không cẩn thận sẽ không xét hết các trường hợp có thểxảy ra của bài toán Thực tế là đã có rất nhiều học sinh bị mất điểm ở bài nàytheo cách làm như vậy

Độ phức tạp của thuật toán theo cách này là O(n)

Cách 2 Tìm kiếm nhị phân:

Bài này cần tìm kiếm nhị phân trên dãy dữ liệu của đề bài, nhưng trướckhi tìm kiếm nhị phân, cần sắp xếp lại dữ liệu của đề bài thành dãy không giảm

Độ phức tạp của thuật toán theo cách này là O(nlogn)

Bước 1 Sắp xếp dãy số nguyên đã cho theo thứ tự không giảm (sắp xếp mảng

a);

Bước 2 dau←1; cuoi ← n;

Bước 3 Nếu a[dau] +a[cuoi]<=4 thì

a[cuoi] ← a[dau]+a[cuoi] ; a[dau] ←0;

dau:=dau+1;

ngược lại thì cuoi←cuoi-1;

Bước 4 Nếu dau<cuoi thì quay lại bước 3;

Trang 9

procedure sort(l,r: longint);

var i,j,x,y: longint;

Trang 10

Cho một dãy số nguyên dương a1,a2, ,aN (10 < N < 105), ai <=104 với mọi

i=1 N và một số nguyên dương S (S < 108)

Yêu cầu : Tìm độ dài nhỏ nhất của dãy con chứa các phần tử liên tiếp của dãy

mà có tổng các phần tử lớn hơn hoặc bằng S

Dữ liệu vào: Đọc từ file SUB.INP gồm 2 dòng, dòng 1 chứa N và S ở dòng đầu.

Dòng 2 chứa các phần tử của dãy

Dữ liệu ra: Kết quả ghi vào file SUB.OUT, chứa độ dài của dãy con tìm được.

Bài toán này có thể giải theo 3 cách sau:

Cách 1: dễ dàng giải bài toán với cách là xét 2 vòng lặp lồng nhau để tìm tất cả

các tổng của các đoạn con đồng thời kết hợp tìm đoạn con có tổng >= S và có sốphần tử ít nhất Độ phức tạp là O(N2) Vì vậy, cách làm này sẽ chỉ thực hiệnđược đến n<=104

Cách 2: Sử dụng phương pháp tìm kiếm nhị phân để giải bài toán, độ phức tạp

là theo cách này là O(NlogN):

Gọi T[i] là tổng của các số A[1] đến A[i]

Vì A[i] là các số dương nên dãy T là dãy tăng dần

Khi đó ta sẽ tiến hành tìm kiếm nhị phân trên dãy T như sau:

Nếu T[i] – T[g] < S thì tìm kq ở đoạn bên trái T[g]

Dưới đây là code của bài toán bằng cách tìm kiếm nhị phân:

Program SUB;

Trang 12

Cách 3: Bài toán có thể giải với độ phức tạp là O(N).

Xét tổng đoạn T = A[d] + A[d+1] + A[d+2] + …+ A[c]

Nếu T < S thì cần bổ sung thêm giá trị của A[c+1] vào tổng để T có thể >= SNếu T <= S thì cập nhật lại kq, vì kết quả là đoạn ngắn nhất nên nếu loại bỏA[d] đi để được đoạn ngắn hơn đoạn trước đó

Bài toán 3 : Lucky number

Chí Phèo thời IT rất yêu thích các số Lucky Số Lucky là số mà chỉ chứacác chữ số Lucky (có hai chữ số Lucky là 4 và 7) trong biểu diễn thập phân Các

số Lucky sắp xếp tăng dần tạo thành dãy số Lucky Một số số hạng đầu tiên củadãy số Lucky là: 4,7,44,47,74,77,… Biết Chí có niềm yêu thích như vậy, Thị Nởliền đố Chí tìm số Lucky thứ K trong dãy Bài toán thực sự hóc búa với Chí, bạnhãy giúp anh Chí câu hỏi này nhé! Biết rằng:

Dữ liệu ra: Ghi vào tệp LUCKY.OUT chứa số Lucky tìm được

Hướng dẫn giải

Bài này có thể giải theo những cách như sau:

Cách 1 Xét lần lượt các số tự nhiên từ 1 đến max Với mỗi số i, kiểm tra xem

nó có là số may mắn hay không? Cứ như thế cho đến khi nào tìm được số maymắn thứ n Độ phức tạp của thuật toán theo cách này là O(n) * độ phức tạp củahàm kiểm tra số may mắn

Cách 2 Ta nhận thấy: Có 2k số may mắn có độ dài k :

- Số thứ nhất là 4

Trang 13

Vì vậy, vị trí đầu cuối để chặt nhị phân là 2x -2 và 2x+1 -2

Thứ hai, ta thấy các chữ số luôn chia thành hai nửa, số 4 và số 7 nên tatìm kiếm nhị phân đoạn này thì ta sẽ tìm ra được chữ số

Độ phức tạp của thuật toán theo cách này là O(log2x), với 1≤ x≤30

Dưới đây là code của bài toán bằng cách tìm kiếm nhị phân:

Trang 14

k là số nguyên nhỏ nhất thỏa mãn điều kiện này.

Ví dụ: Dãy 1,2,3,1,2,2 Số 1 là số 3-ngẫu nhiên; số 2 là số 3-ngẫu nhiên; số 3 là

số 4-ngẫu nhiên

Yêu cầu: Tìm k nhỏ nhất để trong dãy có số k – ngẫu nhiên.

Input: Cho trong tệp văn bản RANNUM.INP như sau:

- Dòng đầu ghi số nguyên dương n (N<=105)

- Dòng thứ 2 ghi n số nguyên a1,a2, an.(|ai|<=103)

Output: Ghi trong tệp văn bản RANNUM.OUT gồm một số k tìm được thỏa

mãn yêu cầu bài toán

Ví dụ:

Trang 16

if dem[A[i]]=0 then dec(dem[A[i-k]])

else if A[i] <> A[i-k] then

Trang 17

Ta thấy 1 trong k số đầu tiên của dãy sẽ là số k – ngẫu nhiên

Vì vậy sẽ dùng thêm mảng dem[-1000 1000] để đếm tần số xuất hiện các của

k phần tử đầu tiên trong dãy, khi đó dem[A[i]] > 0 nghĩa là A[i] có thể là số k –ngẫu nhiên

Duyệt 1 vòng lặp: i từ k+1 đến N:

+ if dem[A[i]] = 0 then dec(dem[A[i-k]])

{Nếu số A[i] không xuất hiện trong k số từ A[i – k] tới A[i – 1] thì A[i] không là

số k ngẫu nhiên – thì giảm dd[A[i-k]] 1 đơn vị để loại số A[i-k] này ra khỏi dãy

2.3.2 Phân loại các dạng thực hiện tìm kiếm nhị phân.

Để biết một bài toán nào đó có thể sử dụng thuật toán tìm kiếm nhị phân

để giải quyết hay không thì có thể qui về hai dạng như sau:

2.3.2.1 Dạng 1: Tìm kiếm nhị phân trên dãy (mảng) có sẵn.

Đối với dạng bài này sẽ đơn giản hơn vì dãy (mảng) các phần tử cần đượcsắp xếp lại (hoặc đã được sắp xếp sẵn), yêu cầu bài toán cần chỉ ra kết quả cóthể xuất hiện trong dãy hay không Với n lớn hơn 104, thì không thể duyệt 2vòng để tìm kết quả vì sẽ quá thời gian qui định (1s) Khi đó, có thể nghĩ đếnsắp xếp bằng quick-sort và tìm kiếm nhị phân Cụ thể:

Ví dụ 1: Các bài toán đã trình bày ở phần 2.3.1

Ví dụ 2 Hẹn gặp (Nguồn: Đề thi HSG cấp Tỉnh Thanh Hóa năm học

2016-2017)

Trang 18

Thành phố Gloaming (Hoàng hôn) nổi tiếng với đường dẫn vào công

viên thành phố Các bức tượng tuyệt đẹp theo chủ đề thần thoại Hy lạp – La mãđặt dọc theo con đường thẳng có một sức hút không cưỡng được với mọi khách

du lịch Còn khi những tia nắng cuối cùng trong ngày miễn cưỡng rời khỏi bầutrời thì sương mù dày đặc, như một tấm voan trắng mềm mại từ từ rũ xuống

Bây giờ đứng cách quá r mét là đã không nhìn thấy mặt nhau và các bức tượng

trở thành nơi lý tưởng cho các đôi nam nữ thanh niên hẹn hò

James Bond cần gặp gấp 2 điệp viên nội tuyến của mình để nhận các mậtbáo khẩn Không muốn 2 người này nhìn thấy nhau, Bond hẹn gặp mỗi người ở

một bức tượng sao cho khoảng cách giữa chúng lớn hơn r Trên đường có n bức tượng, bức tượng thứ i ở vị trí cách đầu con đường d i mét i = 1 ÷ n, 1 ≤ d 1 < d 2

< < d n ≤ 109

Yêu cầu: Hãy xác định James Bond có bao nhiêu cách chọn địa điểm.

Dữ liệu vào: Vào từ file văn bản HENGAP.INP:

- Dòng thứ 2 chứa n số nguyên d 1 , d 2 , , d n

Kết quả: Đưa ra file văn bản HENGAP.OUT một số nguyên là số cách

chọn địa điểm tìm được

- Có ½ số test tương ứng với ½ số điểm có n ≤ 104

- Có ½ số test tương ứng với ½ số điểm có 104 < n ≤ 3×105

Ý tưởng: (Nội dung này tham khảo trong tài liệu tập huấn giáo viên 2017 )

- Dùng một vòng lặp For – do để duyệt i từ 1 đến n-1, trong đó với mỗi vịtrí i thì ta tìm kiếm nhị phân để tìm địa điểm j xa nhất thỏa mãn r+di < dj

Ví dụ 3 (Nguồn: Đề bài hội thi chọn GVG Tỉnh Thanh Hóa năm học

Trang 19

- Dòng đầu tiên chứa số nguyên dương n

- Dòng thứ hai chứa n số nguyên a1, a2, , an Mỗi số cách nhau ít nhất một dấucách trống

Ý tưởng: (Nội dung này tham khảo trong tài liệu tập huấn giáo viên 2017)

- Sắp xếp thành dãy tăng (dùng thuật toán quicksort)

- Thực hiện tìm kiếm nhị phân trên dãy đã sắp xếp

vị trí ghép của 2 người này, thì đây cũng chỉ tính là 1 cách ghép (ví dụ: nếu cócách ghép người thứ 2 với người thứ 3 thì cũng giống như ghép người thứ 3 vớingười thứ 2)

Với số lượng người tham dự nhỏ ông có thể dễ dàng tính ra được số cặp cóthể ghép, nhưng bữa tiệc có rất nhiều người và việc tính toán của ông trở nênkhó khăn hơn

Yêu cầu: Hãy giúp ông tính số cặp có thể ghép được.

Dữ liệu: Vào từ file văn bản GHEPCAP.INP gồm:

- Dòng đầu tiên chứa số nguyên dương N là số người tham dự bữa tiệc (N ≤

105)

- Dòng thứ 2 chứa N số nguyên dương Hi là độ cao của N người (Hi ≤ 109)

Kết quả: Ghi ra file văn bản GHEPCAP.OUT gồm một dòng duy nhất là kết

quả của bài toán

Ví dụ:

Trang 20

100 89 90 101 91 99

11

Ý tưởng: (Nội dung này tham khảo trong tài liệu tập huấn Sở GD&ĐT )

+ Sắp xếp tăng dần theo chiều cao

+ Duyệt từ i từ 1 đến n-1 với mỗi vị trí i thì ta chặt nhị phân để tìm người

có vị trí j xa nhất mà thỏa mãn 9*h[j] <= 10*h[i] Nếu j > i thì ta được thêm sốcặp là j-i

2.3.2.2 Dạng 2: Tìm kiếm nhị phân theo kết quả.

Nhiều người thường dùng cụm từ “chặt nhị phân ẩn” để nói về cách làmnày Đây là cách dự đoán vào kết quả có thể xảy ra của bài toán thuộc khoảngnào, từ đó giới hạn giá trị đầu, giá trị cuối và tìm kiếm nhị phân trên khoảng giátrị đó để đưa ra kết quả của bài toán Một số bài toán cụ thể như sau:

Ví dụ 1 Nguồn: http://www.spoj.com/PTIT/problems/PTIT126J/

Có N cây gỗ, có chiều cao lần lượt là A[1], A[2], , A[n] Bạn cần lấy mộtlượng gỗ độ cao tối thiểu là M bằng cách chặt từ N cây theo cách như sau: chặttất cả những phần thừa của các cây có độ cao lớn hơn H Hãy tìm giá trị H lớnnhất để bạn có thể lấy được lượng gỗ tối thiểu là M

Dữ liệu: Vào từ file văn bản PTIT126J.INP

+ Dòng 1 chứa 2 số nguyên N (1<=N<=106) và M (1 <= M <= 2.109).+ Dòng 2 chứa N số nguyên A[1], A[2], …, A[n], là chiều cao mỗi cây gỗtương ứng (A[i] <= 109, i=1 N) Giả sử luôn tồn tại cách chặt

Kết quả: Ghi ra file PTIT126J.OUT số H duy nhất.

Ý tưởng: Chặt nhị phân theo kết quả Ta biết rằng kết quả của bài toán nằm

trong khoảng (0, max(a[i])) Với mỗi giá trị là H thì ta kiểm tra xem tổng gỗchặt ra có lớn hơn hoặc bằng M hay không Nếu đúng thì ta lại chặt nhị phântrên đoạn sau Nếu sai thì ta lại chặt nhị phân trên đoạn đầu

Ví dụ 2 Nguồn: http://www.spoj.com/PTIT/problems/P145SUMG/

Ngày đăng: 31/10/2019, 14:08

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w