LyThuyetSo ToHop PDF
LyThuyetSo ToHop PDF
LyThuyetSo ToHop PDF
mathematics.
(Hoàng tử toán học - Carl Friedrich Gauss).
1
1.Kiểm tra số nguyên tố
Độ phức tạp O(logN).
Fact :
2
Tức là từ phân tích thừa số nguyên tố của 1 số ta có thể tính được các số ước của nó
thông qua quy tắc nhân, ta chỉ cần lấy các số mũ của từng thừa số nguyên tố + 1 rồi
nhân với nhau.
Ví dụ
N = 120 = 2^3 * 3^1 * 5^1
Nên T(n) = (3 + 1) * (1 + 1) * (1 + 1) = 16 ước
3. Đếm ước, tính tổng ước
Độ phức tạp O(logN)
3
5. Số hoàn hảo
Số hoàn hảo là số có tổng các ước thực sự của nó bằng chính nó. Ví dụ 28 = 1 + 2 +
4 + 7 + 14.
Cách 1 : Kiểm tra khi N nhỏ
Độ phức tạp O(logN)
4
6. Số fibonacci
In ra N số Fibonacci đầu tiên
Phương pháp : Quy hoạch động, lưu các số Fibonacci vào mảng.
Fact : Ở giới hạn số long long chỉ lưu được tới số Fibonacci thứ 93. Tức là số
Fibonacci thứ 4 đã ngoài khoảng lưu của long long.
Độ phức tạp O(N).
Vậy để kiểm tra số N có phải là số Fibonacci hay không chỉ cần sinh ra sẵn 93 số
Fibonacci đầu tiên và lưu vào mảng, khi cần kiểm tra ta duyệt mảng đã lưu này và
kiểm tra.
5
Trong trường hợp khi tính số Fibonacci lớn, ví dụ số Fibo thứ 10^6, vì quá lớn nên
thường đầu bài sẽ yêu cầu in ra kết quả số Fibo này sau khi chia dư cho 10^9 + 7.
Phương pháp : Dùng bảng phương án lớn hơn, trong quá trình tính toán nhớ chia dư
để tránh bị tràn số, không tính xong mới chia dư
7. Sàng số nguyên tố
Phù hợp với các bài toán cần kiểm tra đi kiểm tra lại các số nguyên tố trong 1
khoảng nào đó. Hoặc các bài toán kiểm tra số nguyên tố có nhiều test case.
6
Không sử dụng sàng số nguyên tố chỉ để kiểm tra 1 số có phải là số nguyên tố hay
không !!!!
Độ phức tạp : O(Nlog(logN)
Sàng các số nguyên tố từ 1 tới N
Điều kiện : N ≤ 10^7.
Code ở trên sàng tới 10^7, thông thường các bạn chỉ sàng được tới 10^7, vì cần 1
mảng có cỡ 10^7 + 1 phần tử. Không thể khai báo mảng quá lớn sẽ bị tràn bộ nhớ.
Nên nếu gặp bài kiểm tra số nguyên tố quá lớn thì không thể dùng sàng.
7
8. Phi hàm Euler
Phi hàm Euler : Số các số nguyên từ 1 tới N mà nguyên tố cùng nhau với N
Ví dụ : N = 6, có các số 1, 5 nguyên tố cùng nhau với 6, nên phi(6) = 2
Công thức :
8
Fact : Nếu p là số nguyên tố thì phi(p) = p - 1 ???
Phát hiện của Gauss :
Ý nghĩa là : Tổng tất cả các phi hàm euler của ước số của N sẽ bằng N
Ví dụ N = 8 thì phi(1) + phi(2) + phi(4) + phi(8) = 1 + 2 + 2 + 3 = 8
9.Giai thừa
Khi tính giai thừa họ thường không yêu cầu tính với số quá lớn. Nếu N lớn thì
thường yêu cầu chia dư cho 1e9 + 7
Độ phức tạp : O(n)
Chú ý : 0! = 1
9
10. Ước chung lớn nhất, bội chung nhỏ nhất
Độ phức tạp : O(logN)
GCD : Greatest common divisor : UCLN
LCM : Least common multiple : BCNN
Chú ý có thể dùng hàm có sẵn __gcd(a, b), không code hàm tìm GCD bằng cách
trừ dần => TLE
10
11. Hai số nguyên tố cùng nhau
Hai số nguyên tố cùng nhau nếu ước chung của nó = 1, chứ không phải là 2 số đều
là số nguyên tố.
11
nhiêu cách chia N phần tử này thành 2 tập, tập 1 có K phần tử và tập 2 có N-K phần
tử.
Cách 1 dùng trực tiếp công thức, cách 2 dùng công thức Pascal.
12