Bài tập luyện tập định lý Euclid - Euler về tìm số hoàn hảo chẵn và Lũy thừa nhị phân

Kiểm tra số hoàn hảo chẵn (Euclid)

Nộp bài
Time limit: 1.0 / Memory limit: 256M

Point: 1

Số hoàn hảo là số nguyên dương mà tổng các ước thực sự của nó (không tính chính nó) bằng chính nó. Theo định lý Euclid - Euler, mọi số hoàn hảo chẵn đều có dạng N = 2^(p-1) * (2^p - 1), trong đó 2^p - 1 là một số nguyên tố Mersenne. Cho T truy vấn, mỗi truy vấn cung cấp một số nguyên dương N. Hãy kiểm tra xem N có phải là số hoàn hảo chẵn hay không. Do số lượng truy vấn rất lớn, bạn cần tìm ra một thuật toán kiểm tra siêu tốc.

Dữ liệu vào: Dòng 1: Số nguyên dương T (1 <= T <= 10^5) là số lượng truy vấn. T dòng tiếp theo: Mỗi dòng chứa một số nguyên dương N (1 <= N <= 2 * 10^18).

Dữ liệu ra: Gồm T dòng, mỗi dòng in ra YES nếu N là số hoàn hảo chẵn, ngược lại in ra NO.

Ví dụ:

Input:
3
6
28
10
Output:
YES
YES
NO

Tìm số hoàn hảo trong đoạn (Euclid)

Nộp bài
Time limit: 1.0 / Memory limit: 256M

Point: 1

Cho hai số nguyên dương L và R. Hãy tìm và in ra tất cả các số hoàn hảo chẵn nằm trong đoạn [L, R].

Dữ liệu vào: Một dòng duy nhất chứa hai số nguyên dương L và R (1 <= L <= R <= 2 * 10^18).

Dữ liệu ra: In ra các số hoàn hảo chẵn nằm trong đoạn [L, R] theo thứ tự tăng dần, mỗi số trên một dòng. Nếu không có số nào thỏa mãn, in ra -1.

Ví dụ:

Input:
10 500
Output:
28
496

Số hoàn hảo thứ K (Euclid)

Nộp bài
Time limit: 1.0 / Memory limit: 256M

Point: 1

Dựa vào định lý Euclid - Euler, ta biết rằng một số hoàn hảo chẵn được tạo ra khi và chỉ khi 2^p - 1 là số nguyên tố. Bạn hãy tìm số hoàn hảo chẵn thứ K trong dãy các số hoàn hảo chẵn được sắp xếp tăng dần.

Dữ liệu vào: Một dòng duy nhất chứa số nguyên dương K (1 <= K <= 8).

Dữ liệu ra: In ra số hoàn hảo chẵn thứ K.

Ví dụ:

Input:
2
Output:
28

Kiểm tra số Mersenne (Euclid)

Nộp bài
Time limit: 1.0 / Memory limit: 256M

Point: 1

Số nguyên tố Mersenne là số nguyên tố có dạng M = 2^p - 1. Cho số nguyên dương p, bạn hãy kiểm tra xem 2^p - 1 có phải là số nguyên tố hay không. Một tính chất quan trọng: Để 2^p - 1 là số nguyên tố thì bản thân p bắt buộc phải là một số nguyên tố (tuy nhiên chiều ngược lại không phải lúc nào cũng đúng, ví dụ p=11 thì 2^11 - 1 = 2047 = 23 * 89 không phải nguyên tố).

Dữ liệu vào: Dòng đầu tiên chứa số nguyên T (1 <= T <= 100) là số lượng test case. T dòng tiếp theo, mỗi dòng chứa một số nguyên dương p (2 <= p <= 31).

Dữ liệu ra: Gồm T dòng, mỗi dòng in ra YES nếu 2^p - 1 là số nguyên tố, ngược lại in ra NO.

Ví dụ:

Input:
3
2
3
11
Output:
YES
YES
NO

Lũy thừa số hoàn hảo

Nộp bài
Time limit: 1.0 / Memory limit: 256M

Point: 1

Người ta tìm ra được một số nguyên tố p rất lớn sao cho 2^p - 1 là một số nguyên tố Mersenne. Gọi N là số hoàn hảo chẵn được tạo ra từ số p này theo công thức Euclid - Euler. Do N có thể vô cùng lớn, bạn hãy tính giá trị của N chia lấy dư cho 10^9 + 7.

Dữ liệu vào: Một dòng duy nhất chứa số nguyên dương p (2 <= p <= 10^12). Dữ liệu đảm bảo 2^p - 1 là số nguyên tố.

Dữ liệu ra: In ra giá trị của số hoàn hảo N modulo 10^9 + 7.

Ví dụ:

Input:
3
Output:
28

Lũy thừa nhị phân chia dư (đồng dư)

Nộp bài
Time limit: 1.0 / Memory limit: 256M

Point: 1

Cho a, b, c là các số nguyên dương, hãy tính a lũy thừa b chia dư cho c


Ràng buộc: ~1 \leq a, b, c \leq 10^6~


Input:
2 1000000 10

Tính 2 mũ 1000000 chia dư cho 10

Output:
6

Lũy thừa nhị phân

Nộp bài
Time limit: 1.0 / Memory limit: 256M

Point: 1

Nhiệm vụ của bạn là tính nhanh giá trị ~a^b~ mod ~10^9+7~

Lưu ý: Trong bài này, giả định rằng ~0^0 = 1~


Đầu vào:

Dòng đầu tiên chứa số nguyên ~n~: số phép tính.

~n~ dòng tiếp theo, mỗi dòng chứa hai số nguyên ~a~ và ~b~


Đầu ra:

In ra n dòng, mỗi dòng là kết quả của phép tính tương ứng.


Ràng buộc:

~1 \le n \le 2 \cdot 10^5~

~0 \le a,b \le 10^9~

Ví dụ :

Input:
3
3 4
2 8
123 123
Output:
81
256
921450052

Lũy thừa nhị phân (chia để trị)

Nộp bài
Time limit: 1.0 / Memory limit: 256M

Point: 1

Nhiệm vụ của bạn là tính A^K, kết quả được chia dư với 10^9 + 7


Đầu vào: Dòng duy nhất chứa 2 số A và K


Ràng buộc: 1<=N<=10^6; 1<=K<=10^9


Đầu ra: In ra kết quả của bài toán


Input:
9 9
Output:
387420489