Hướng dẫn cho Kaninho với bài toán chia hết và giai thừa
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:
Đối với những bài chứa các phép nhân, chúng ta thường nghĩ đến phân tích thừa số nguyên tố.
Trong bài này, có thể phân tích \(M = p_1^{v_1} * p_2^{v_2}*...*p_n^{v_n}\) với \(p_1, p_2, ..., p_n\) là các số nguyên tố nhỏ hơn 100.
Hint 1: Bậc của một số nguyên tố \(p\) trong \(x!\) là \([\frac{x}{p}] + [\frac{x}{p^2}] + [\frac{x}{p^3}] + ...\)
Hint 2: Có thể kiểm tra xem \(x!\) chia hết cho \(M\), với \(x\) cho trước không?
Hint 3: Sử dụng hint 2, có thể tìm được \(x\) nhỏ nhất bằng cách nào.
Điều kiện để \(x!\) chia hết cho \(M\) là bậc của \(p_i\) trong \(x!\) phải không nhỏ hơn \(v_i\), với mọi \(i\). Tức là nếu số \(x\) được cho trước, ta có thể kiểm tra xem \(x!\) có chia hết \(M\) không. Đến đây, ta có thể nghĩ đến việc chặt nhị phân để tìm \(x\) nhỏ nhất thỏa mãn điều kiện trên.
Bình luận