Editorial for Ấn Nút
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.
Submitting an official solution before solving the problem yourself is a bannable offence.
Em xin đóng góp lời giải cho bài này:
Gọi tổng \(k\) là \(h+i+f\).
Ta cho 1 biến \(t\) chạy từ 1 đến \(sqrt(k)\)
-- Hàm xử lý biến t (trả về gcd tối ưu) --
Trường hợp 1: \(t=gcd(n,r)\) thì ta kiểm tra xem có thỏa đề không (số lượng số thêm vào nhỏ hơn \(f\)).
Trường hợp 2: \(t=(n+r)/gcd(n,r)\) để gcd(h,n) lớn nhất ta chọn \(h+n\) là số lớn nhất có thể và chia hết cho \(t\). Sau đó ta kiểm tra như trên.
Trả về giá trị gcd(n,r) lớn nhất trong 2 trường hợp trên.
Nếu không có giá trị nào thỏa thì trả về -1.
-- Quay lại bài toán --
Giả sử tìm được \(gcd\) thỏa rồi (hàm trả về 1 só khác -1).
Nếu số \(gcd\) đó lớn hơn \(sqrt(m)\) thì bài toán được hoàn thành.
Nếu số đó nhỏ hơn \(sqrt(m)\) thì chạy tiếp đến khi tìm được.
----//----
Comments