Remember to use this editorial only when stuck, and not to copy-paste code from it. Please be respectful to the problem author and editorialist.
Submitting an official solution before solving the problem yourself is a bannable offence.
Subtask 1
Duyệt trâu tất cả những cặp trong mảng , để kiểm tra một số có phải là chính phương, ta có thể dùng hàm sqrt()
hoặc chặt nhị phân.
ĐPT:
Subtask 2
Vì , nên thay vì duyệt chỉ số thì ta duyệt theo giá trị.
Gọi là số lần xuất hiện của giá trị trong mảng, là giá trị lớn nhất trong mảng, khi đó đáp án sẽ là nếu và là số chính phương.
ĐPT: với là giá trị lớn nhất trong mảng.
Sutbask 3
Ta xét tích của hai số và bất kì, đặt .
Giả sử và có dạng phân tích thừa số nguyên tố như sau:
.
.
(, là số nguyên tố).
Khi đó: .
Để là số chính phương, thì .
Từ đó suy ra được: .
Như vậy, ta xét dạng "nén" của một số như sau: .
Để là số chính phương thì: .
Như vậy ta chỉ cần xét những cặp có cùng giá trị , xong rồi chặt nhị phân để tìm những cặp thỏa mãn .
Để phân tích thành thừa số nguyên tố, ta có thể xử lý giống như cách kiểm tra số nguyên tố.
ĐPT: với là giá trị lớn nhất trong mảng.
Comments