[JAVA T2 2024]. TEST 2. ARRAYLIST, SET & MAP

[Set & Map Cơ Bản]. Bài 1. Set Map & int

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

Point: 1

Cho mảng A[] gồm N phần tử số nguyên int, bạn hãy lọc ra các giá trị khác nhau trong mảng và in ra theo thứ tự tăng dần. Bài này bạn cài đặt lần lượt bằng set & map


Đầu vào

Dòng đầu tiên là số nguyên N.

Dòng tiếp theo gồm N số nguyên A[i]


Giới hạn

1≤ N ≤ 10^5

-10^9 ≤ A[i] ≤ 10^9


Đầu ra

Dòng 1 in ra số lượng số nguyên khác nhau trong mảng

Dòng 2 in ra các số nguyên khác nhau theo thứ tự tăng dần


Ví dụ :

Input 01
9
1 2 1 2 3 1 2 4 1
Output 01
4
1 2 3 4

[Set & Map Cơ Bản]. Bài 2. Set Map & int 2

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

Point: 1

Cho mảng A[] gồm N phần tử số nguyên int, bạn hãy lọc ra các giá trị khác nhau trong mảng và in ra theo thứ tự giảm dần. Bài này bạn cài đặt lần lượt bằng set & map


Đầu vào

Dòng đầu tiên là số nguyên N.

Dòng tiếp theo gồm N số nguyên A[i]


Giới hạn

1≤ N ≤ 10^5

-10^9 ≤ A[i] ≤ 10^9


Đầu ra

Dòng 1 in ra số lượng số nguyên khác nhau trong mảng

Dòng 2 in ra các số nguyên khác nhau theo thứ tự giảm dần


Ví dụ :

Input 01
9
1 2 1 2 3 1 2 4 1
Output 01
4
4 3 2 1

[Set & Map Cơ Bản]. Bài 3. Set Map & char

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

Point: 1

Cho mảng A[] gồm N kí tự là chữ cái in hoa, in thường hoặc chữ số, bạn hãy đếm xem có bao nhiêu ký tự khác nhau trong mảng này. Sau đó hãy in ra ký tự có thứ tự từ điển lớn nhất, nhỏ nhất, lớn thứ nhì và nhỏ thứ nhì trong mảng.

Dữ liệu đảm bảo có ít nhất 2 kí tự khác nhau trong mảng. Bài này bạn cài đặt lần lượt bằng set & map


Đầu vào

Dòng đầu tiên là số nguyên N.

Dòng tiếp theo gồm N ký tự A[i]


Giới hạn

1≤ N ≤ 10^5


Đầu ra

Dòng 1 in ra số lượng ký tự khác nhau trong mảng

Dòng 2 in ra ký tự có thứ tự từ điển lớn nhất, nhỏ nhất, lớn thứ nhì và nhỏ thứ nhì trong mảng.


Ví dụ :

Input 01
10
2 8 t e c h t e c h
Output 01
6
t 2 h 8

[Set & Map Cơ Bản]. Bài 4. Set Map & find

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

Point: 1

Cho mảng A[], B[] gồm NM phần tử, bạn được yêu cầu kiểm tra xem mỗi phần tử trong mảng A[] có xuất hiện trong mảng B[] hay không ? Nếu có hãy in 28tech, ngược lại in 29tech. Bài này bạn cài đặt lần lượt bằng set & map

Gợi ý : Lưu mảng B[] vào set (map) để tìm kiếm nhanh hơn.


Đầu vào

Dòng đầu tiên là số nguyên NM.

Dòng thứ 2 gồm N số nguyên A[i]

Dòng thứ 3 gồm M số nguyên B[i]


Giới hạn

1≤ N, M ≤ 10^5

-10^9 ≤ A[i], B[i]≤ 10^9


Đầu ra

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


Ví dụ :

Input 01
3 5
1 2 3
1 2 6 7 8
Output 01
28tech 28tech 29tech

[Set & Map Cơ Bản]. Bài 5. Set Map & count

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

Point: 1

Cho mảng A[], B[] gồm NM phần tử, bạn được yêu cầu kiểm tra xem mỗi phần tử trong mảng A[] có xuất hiện trong mảng B[] bao nhiêu lần? Bài này bạn cài đặt lần lượt bằng set & map

Gợi ý : Lưu mảng B[] vào trong multiset, sau đó duyệt qua từng phần tử trong mảng A[] và sử dụng hàm count để đếm


Đầu vào

Dòng đầu tiên là số nguyên N.

Dòng tiếp theo gồm N số nguyên A[i]


Giới hạn

1≤ N ≤ 10^5

-10^9 ≤ A[i] ≤ 10^9


Đầu ra

In ra số lần xuất hiện của từng phần tử của mảng A[] trong mảng B[]


Ví dụ :

Input 01
3 6
1 2 3
1 1 1 2 1 4
Output 01
4 1 0

[Set & Map]. Bài 28. Tần suất lớn nhất

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

Point: 2

Cho mảng A[] gồm N kí tự, bạn hãy xác định xem tần suất lớn nhất của 1 kí tự xuất hiện trong mảng là bao nhiêu. Và có bao nhiêu kí tự thỏa mãn có tần suất lớn nhất đó. Ví dụ : A[] = {2, 8, t, e, c, h, t, e, c, h} thì tần suất lớn nhất của 1 kí tự lớn nhất là 2 và có 4 kí tự t, e, c, h thỏa mãn


Đầu vào

Dòng 1 là N : số kí tự trong mảng

Dòng 2 gồm N kí tự viết cách nhau 1 dấu cách


Giới hạn

1<=N<=10^6

Các kí tự là chữ in hoa, in thường và chữ số


Đầu ra

Dòng 1 in ra tần suất lớn nhất của kí tự

Dòng 2 in lần lượt các kí tự thỏa mãn có cùng tần suất lớn nhất đó theo thứ tự từ điển tăng dần.


Ví dụ :

Input 01
10
2 8 t e c h t e c h
Output 01
2
c e h t

[Set & Map]. Bài 29. Kí tự chữ cái khác nhau

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

Point: 2

Cho một mảng kí tự A[] gồm N kí tự, bạn hãy xác định có bao nhiêu kí tự là chữ cái khác nhau xuất hiện trong mảng A[] nhưng không phân biệt hoa thường. Tức là chữ cái in hoa và in thường của cùng 1 chữ cái được coi là giống nhau, ví dụ a và A được coi là giống nhau.


Đầu vào

Dòng 1 là N : số kí tự trong mảng

Dòng 2 gồm N kí tự viết cách nhau 1 dấu cách


Giới hạn

1<=N<=10^6

Các kí tự là chữ in hoa, in thường và chữ số


Đầu ra

Dòng 1 in ra số lượng kí tự chữ cái khác nhau

Dòng 2 liệt kê các chữ cái khác nhau đó theo thứ tự từ điển tăng dần.


Ví dụ :

Input 01
10
2 8 T E C H t e c h
Output 01
4
c e h t

[Set & Map]. Bài 30. Tần suất số đẹp

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

Point: 2

Cho mảng A[] gồm N số nguyên, số đẹp là số chỉ bao gồm các chữ số 0, 2, 6, 8 theo quan niệm của 28Tech. Bây giờ bạn cần đếm xem mỗi số đẹp trong mảng A[] xuất hiện bao nhiêu lần và liệt kê theo thứ tự xuất hiện trong mảng.


Đầu vào

Dòng 1 là N : số lượng phần tử trong mảng

Dòng 2 gồm N số trong mảng A[]


Giới hạn

1<=N<=10^5

0<=A[i]<=10^18


Đầu ra

In ra các số đẹp xuất hiện trong mảng A[] kèm theo tần suất của nó


Ví dụ :

Input 01
6
22 66 88 22 11 3
Output 01
22 2
66 1
88 1

[Vector]. Bài 18. Hệ thập lục phân

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

Point: 2

Cho số N không âm 64 bit, bạn hãy in ra dạng thập lục phân của N. Bạn cần triển khai theo mã nguồn sau

vector<char> convert_number(long long n){

}

int main(){
    int t; cin >> t;
    while(t--){
        long long n;
        cin >> n;
        vector<char> res = convert_number(n);
        for(char x : res){
            cout << x;
        }
        cout << endl;
    }
    return 0;
}

Đầu vào

• Dòng 1 là T : số test case

T dòng tiếp theo mỗi dòng là số nguyên N


Giới hạn

• 1<=T<=1000

• 0<=N<=10^18


Đầu ra

• Đối với mỗi test in ra dạng thập lục phân của N


Ví dụ :

Input 01
10
264
25
23
338
259
318
481
136
207
8
Output 01
108
19
17
152
103
13e
1e1
88
cf
8

[Vector]. Bài 19. Nguyên tố & không nguyên tố

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

Point: 2

Cho 1 dãy số có không quá 10k số nguyên, bạn hãy lọc ra các số nguyên tố trong dãy và in theo thứ tự xuất hiện từ cuối về, và các số không nguyên tố thì bạn in theo thứ tự xuất hiện.

Ví dụ : dãy số : 1 3 2 7 8 10 2 thì bạn cần in các số nguyên tố theo thứ tự ngược là 2 7 2 3, các số không nguyên tố là 1 8 10

Gợi ý : Để đọc hết mọi số trong luồng input bạn sử dụng vòng lặp sau

int n; 
while(cin >> n){
    //Xử lý n đọc được
}

Đầu vào

Gồm nhiều dòng, mỗi dòng gồm nhiều số


Giới hạn

Có không quá 10k số, các số xuất hiện trong dãy là số int


Đầu ra

Dòng 1 in ra các số nguyên tố theo thứ tự xuất hiện ngược từ cuối về

Dòng 2 in ra các số không phải là số nguyên tố theo thứ tự xuất hiện


Ví dụ :

Input 01
19 
12 12 16 
5 17 2 
12 
3 14 
11 12 14 
15 12
Output 01
11 3 2 17 5 19 
12 12 16 12 14 12 14 15 12