Bài tập tổng hợp (struct + kiến thức khác)
Nhập xuất đơn thức (nạp chồng cin, cout)
Nộp bàiPoint: 1
Xây dựng struct DonThuc gồm hệ số (số thực) và số mũ (số nguyên).
Nạp chồng toán tử >> để nhập hệ số và số mũ.
Nạp chồng toán tử << để in ra đơn thức theo định dạng: heSo*x^soMu.
Lưu ý: In ra các hệ số của đơn thức luôn lấy 1 chữ số sau phần thập phân
Đầu vào:
Một dòng chứa hệ số và số mũ.
Đầu ra:
Chuỗi biểu diễn đơn thức.
Ràng buộc:
Số mũ >= 0.
Ví dụ:
Input:
5.5 2
Output:
5.5*x^2
Nhập xuất tài khoản ngân hàng (nạp chồng cin, cout)
Nộp bàiPoint: 1
Xây dựng struct TaiKhoan gồm Số tài khoản (chuỗi) và Số dư (số nguyên long long).
Nạp chồng toán tử >> để nhập Số tài khoản và Số dư.
Nạp chồng toán tử << để in ra thông báo số dư theo định dạng: "Tai khoan: [SoTK] | So du: [SoDu] VND".
Đầu vào:
Dòng 1: Số tài khoản (không chứa khoảng trắng).
Dòng 2: Số dư.
Đầu ra:
Chuỗi thông báo định dạng.
Ràng buộc:
Số dư >= 0.
Ví dụ:
Input:
0123456789
5000000
Output:
Tai khoan: 0123456789 | So du: 5000000 VND
Dãy fibo
Nộp bàiPoint: 1
Dãy số Fibonacci được định nghĩa như sau:
F₀ = 0
F₁ = 1
Fₙ = Fₙ₋₂ + Fₙ₋₁ (với n ≥ 2)
Nhiệm vụ của bạn là tính giá trị của Fₙ với một số nguyên n được cho trước.
Dữ liệu vào:
Dòng duy nhất chứa một số nguyên n.
Dữ liệu ra:
In ra giá trị Fₙ lấy modulo 10^9 + 7.
Ràng buộc:
0 ≤ n ≤ 10^18
Ví dụ :
Input:
10
Output:
55
Bubble sort
Nộp bàiPoint: 1
Bubble sort là một thuật toán sắp xếp bao gồm nhiều vòng lặp. Ở mỗi vòng lặp, thuật toán sẽ duyệt mảng từ trái sang phải và hoán đổi (swap) bất kỳ hai phần tử liền kề nào nằm sai thứ tự.
Cho một mảng gồm n số nguyên, hãy tính số vòng lặp mà thuật toán bubble sort cần để sắp xếp mảng theo thứ tự tăng dần.
Dữ liệu vào:
Dòng đầu tiên: số nguyên n — kích thước mảng.
Dòng thứ hai: n số nguyên x₁, x₂, …, xₙ — các phần tử trong mảng.
Dữ liệu ra:
In ra một số nguyên: số vòng lặp cần thiết để bubble sort sắp xếp xong mảng
Ràng buộc:
~1 \le n \le 2 \cdot 10^5~
~1 \le x_i \le 10^9~
Ví dụ :
Input:
5
3 2 4 1 4
Output:
3
Sắp xếp thí sinh
Nộp bàiPoint: 1
Hãy sắp xếp danh sách thí sinh theo tổng điểm giảm dần. Mỗi thí sinh gồm các thông tin:
- Mã thí sinh: là một số nguyên, tự động tăng. Tính từ 1.
- Tên thí sinh, ngày sinh
- Điểm môn 1, điểm môn 2, điểm môn 3
Đầu vào: Dòng đầu chứa số thí sinh. Mỗi thí sinh viết trên 3 dòng:
- Dòng 1: Tên thí sinh
- Dòng 2: Ngày sinh
- Dòng 3,4,5: 3 điểm thi tương ứng. Các điểm thi đều đảm bảo hợp lệ (từ 0 đến 10).
Đầu ra: In ra danh sách thí sinh đã sắp xếp theo tổng điểm giảm dần. Nếu 2 thí sinh bằng điểm nhau thì thí sinh nào xuất hiện trước sẽ viết trước. Mỗi thí sinh viết trên một dòng gồm: mã, tên, ngày sinh và tổng điểm. Các thông tin cách nhau đúng 1 khoảng trống. Điểm tổng được làm tròn đến 1 số sau dấu phẩy.
Ví dụ:
Input:
3
Nguyen Van A
12/12/1994
3.5
7.0
5.5
Nguyen Van B
1/9/1994
7.5
9.5
9.5
Nguyen Van C
6/7/1994
4.5
4.5
5.0
Output:
2 Nguyen Van B 1/9/1994 26.5
1 Nguyen Van A 12/12/1994 16.0
3 Nguyen Van C 6/7/1994 14.0
Sắp xếp danh sách mặt hàng
Nộp bàiPoint: 1
Hãy sắp xếp danh sách các mặt hàng theo lợi nhuận giảm dần. Mỗi mặt hàng gồm các thông tin: Mã mặt hàng (là một số nguyên, tự động tăng, tính từ 1); Tên mặt hàng, nhóm hàng: là các xâu ký tự; Giá mua, giá bán: là các số thực (không quá 9 chữ số)
Đầu vào: Dòng đầu chứa số mặt hàng. Mỗi mặt hàng viết trên 4 dòng: Dòng 1: Tên mặt hàng. Dòng 2: Nhóm hàng. Dòng 3: Giá mua. Dòng 4: Giá bán
Đẩu ra: Ghi ra danh sách mặt hàng đã sắp xếp theo lợi nhuận giảm dần (lợi nhuận tính bằng giá bán trừ đi giá mua). Mỗi mặt hàng viết trên một dòng gồm: mã, tên, nhóm hàng và lợi nhuận. Các thông tin cách nhau đúng 1 khoảng trống. Lợi nhuận viết với 2 chữ số sau dấu phẩy.
Ví dụ:
Input:
3
May tinh SONY VAIO
Dien tu
16400
17699
Tu lanh Side by Side
Dien lanh
18300
25999
Banh Chocopie
Tieu dung
27.5
37
Output:
2 Tu lanh Side by Side Dien lanh 7699.00
1 May tinh SONY VAIO Dien tu 1299.00
3 Banh Chocopie Tieu dung 9.50
Struct chuyến bay
Nộp bàiPoint: 1
Khai báo cấu trúc chuyến bay. Biết rằng một chuyến bay gồm những thành phần như sau:
- Mã chuyến bay: chuỗi tối đa 5 ký tự.
- Ngày bay: kiểu dữ liệu ngày(NGAY).
- Giờ bay: kiểu thời gian(THOIGIAN).
- Nơi đi: chuỗi tối đa 20 ký tự.
- Nơi đến: chuỗi tối đa 20 ký tự.
- Nhập danh sách n chuyến bay.
- Xuất danh sách thông tin các chuyến bay.
- Tìm một ngày có nhiều chuyến bay nhất.
- Tìm một chuyến bay trong danh sách theo mã chuyến bay.
Input:
3
AB123
1 5 2024
15 30 00
Ha Noi
TP Ho Chi Minh
CD456
2 5 2024
10 15 00
Da Nang
Ha Noi
EF789
1 5 2024
20 00 00
Ha Noi
Da Nang
AB123
Output:
Danh sach chuyen bay:
Ma chuyen bay: AB123, Ngay bay: 01/05/2024, Gio bay: 15:30:00, Noi di: Ha Noi, Noi den: TP Ho Chi Minh
Ma chuyen bay: CD456, Ngay bay: 02/05/2024, Gio bay: 10:15:00, Noi di: Da Nang, Noi den: Ha Noi
Ma chuyen bay: EF789, Ngay bay: 01/05/2024, Gio bay: 20:00:00, Noi di: Ha Noi, Noi den: Da Nang
Ngay co nhieu chuyen bay nhat: 2024-05-01 (2 chuyen bay)
Ma chuyen bay: AB123, Ngay bay: 01/05/2024, Gio bay: 15:30:00, Noi di: Ha Noi, Noi den: TP Ho Chi Minh
Phân Tích Thừa Số Nhanh
Nộp bàiPoint: 1
Cho T truy vấn. Với mỗi số X, hãy in ra phân tích thừa số nguyên tố của X dưới dạng p1^a1 x p2^a2 x ... Yêu cầu: Dùng Sàng để tìm Ước SNT Nhỏ Nhất (SPF - Smallest Prime Factor) để tăng tốc độ phân tích.
Input:
Dòng đầu tiên chứa T (1 <= T <= 100000).
T dòng tiếp theo, mỗi dòng chứa một số nguyên X (2 <= X <= 1000000).
Output:
T dòng, mỗi dòng là chuỗi phân tích. (Xem ví dụ).
Test Case 1:
Input:
3
12
13
28
Output:
2^2 x 3^1
13^1
2^2 x 7^1
Số Nguyên Tố Trong Một Mảng
Nộp bàiPoint: 1
Cho một mảng A gồm K phần tử. Hãy đếm xem có bao nhiêu số nguyên tố xuất hiện trong mảng A.
Input:
Dòng đầu tiên chứa số nguyên K (1 <= K <= 100000).
Dòng thứ hai chứa K số nguyên Ai (1 <= Ai <= 1000000), cách nhau bởi dấu cách.
Output:
In ra số lượng số nguyên tố trong mảng A.
Test Case 1:
Input:
5
4 7 10 11 13
Output:
3
(Giải thích: Các SNT là {7, 11, 13})
Đếm Số Lượng Các Ước
Nộp bàiPoint: 1
Cho N. Tìm số i (1 <= i <= N) có số lượng ước số lớn nhất. Nếu có nhiều số i có cùng số lượng ước lớn nhất, hãy in ra số i nhỏ nhất. Gợi ý: Nếu n = p1^a1 x p2^a2, thì d(n) = (a1+1) x (a2+1).
Input:
Một dòng duy nhất chứa số nguyên N (1 <= N <= 100000).
Output:
In ra số i có nhiều ước nhất.
Test Case 1:
Input:
10
Output:
6
(Giải thích: 6, 8, 10 đều có 4 ước. Chọn 6 vì nhỏ nhất)
Số Nguyên Tố Gần N (Lớn hơn N)
Nộp bàiPoint: 1
Cho một số nguyên N. Tìm số nguyên tố p nhỏ nhất sao cho p > N.
Input:
Một dòng duy nhất chứa số nguyên N (1 <= N <= 1000000).
Output:
In ra số nguyên tố p nhỏ nhất lớn hơn N. (Lưu ý: Sàng phải được xây dựng đến N + k nào đó đủ lớn. Với N=1000000, SNT tiếp theo là 1000003)
Test Case 1:
Input:
15
Output:
17
Truy Vấn Tổng SNT (Mảng Cộng Dồn)
Nộp bàiPoint: 1
Cho N và Q truy vấn [L, R]. Hãy tính tổng các số nguyên tố trong đoạn [L, R]. Yêu cầu: Xây dựng Sàng, sau đó dùng Mảng Cộng Dồn (Prefix Sum) để lưu tổng các SNT.
Input:
Dòng đầu tiên chứa hai số nguyên N và Q (1 <= N <= 1000000, 1 <= Q <= 100000).
Q dòng tiếp theo, mỗi dòng chứa hai số nguyên L và R (1 <= L <= R <= N).
Output:
In ra Q dòng, mỗi dòng là tổng các SNT trong đoạn [L, R]. (Dùng long long).
Test Case 1:
Input:
15 2
1 7
10 15
Output:
17
24
(Giải thích 1: S[7] - S[0] = 17 - 0 = 17. Giải thích 2: S[15] - S[9] = 41 - 17 = 24)
Tích Lớn Nhất Của Hai SNT
Nộp bàiPoint: 1
Cho một số nguyên N. Tìm tích lớn nhất P = p x q sao cho p và q là hai số nguyên tố (có thể p=q) và P <= N.
Input:
Một dòng duy nhất chứa số nguyên N (4 <= N <= 1000000).
Output:
In ra tích P lớn nhất.
Test Case 1:
Input:
20
Output:
15
(Giải thích: Các tích: 4, 6, 9, 10, 14, 15. Lớn nhất là 15 = 3 x 5)
Số Bán Nguyên Tố (Semi-Prime)
Nộp bàiPoint: 1
Một số được gọi là Bán Nguyên Tố nếu nó là tích của đúng hai số nguyên tố (hai số này có thể bằng nhau). Ví dụ: 4 = 2 x 2, 6 = 2 x 3, 9 = 3 x 3, 10 = 2 x 5. Cho N. Hãy đếm số lượng số Bán Nguyên Tố <= N.
Input:
Một dòng duy nhất chứa số nguyên N (1 <= N <= 1000000).
Output:
In ra số lượng số Bán Nguyên Tố nhỏ hơn hoặc bằng N.
Test Case 1:
Input:
20
Output:
6
(Giải thích: {4, 6, 9, 10, 14, 15})
Số 0 tận cùng của N!
Nộp bàiPoint: 1
Cho là số nguyên N ≤ 10^9.
Tính số chữ số 0 tận cùng của N!
Đầu vào: Nhập N
Đầu ra: In ra số lượng chữ số 0 tận cùng của N!
Input:
100
Output:
24
Uớc nguyên tố lớn nhất của N!
Nộp bàiPoint: 1
Cho N là số nguyên nhỏ hơn hoặc bằng 10^6
Tìm ước nguyên tố lớn nhất xuất hiện trong N!
Đầu vào: Nhập số nguyên N (2 < N <= 10^6)
Đầu ra: In ra số nguyên tố lớn nhất xuất hiện trong N!
Input 01:
10
Output 01:
7
Input 02:
999999
Output 02:
999983