Hướng dẫn cho Ấn Nút
Chỉ sử dụng khi thực sự cần thiết như một cách tôn trọng tác giả và người viết hướng dẫn này.
Chép code từ bài hướng dẫn để nộp bài là hành vi có thể dẫn đến khóa tài khoản.
Chép code từ bài hướng dẫn để nộp bài là hành vi có thể dẫn đến khóa tài khoản.
Authors:
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.
----//----
Bình luận