# ALGI Gaudium: Editorial [**Gaudium**](https://codeforces.com/contestInvitation/e8c41fb16168f761a2bd812de23b360d59d6181e) là Contest với mục đích giải trí được tổ chức bởi [**The Algitect** (ALGI Project)](https://www.facebook.com/algitect.project) nhân dịp Tết Nguyên Đán năm Ất Tỵ 2025. [toc] ## Bài A: Is 2025 the "year of the snake"? ![image](https://hackmd.io/_uploads/rku-LmKOJg.png) Chỉ cần in ra câu trả lời ứng với dạng câu hỏi `Is it a pencil?`, tức là `Yes, it is.` :::warning Lưu ý: Cần chính xác cả ký tự in hoa, dấu phẩy, và dấu chấm. ::: :::success :::spoiler Code ```cpp = 1 #include <bits/stdc++.h> using namespace std; int main() { cout << "Yes, it is."; return 0; } ``` ::: ## Bài B: Kiểm tra công dân Đáp án của bài như sau: | STT | Câu khẳng định | Đáp án | |:-:| - | :-: | | 1 | Việt Nam > Thái Lan | TRUE | | 2 | Tôi yêu Việt Nam | TRUE | | 3 | Bác Hồ sinh ngày 19 tháng 5, 1880 | FALSE | | 4 | Việt Nam là quốc gia sản xuất cà phê top 1 thế giới | FALSE | | 5 | Năm nay là năm con trăn | FALSE | | 6 | Quốc kỳ Việt Nam có ngôi sao đỏ trên nền màu vàng | FALSE | | 7 | Fansipan là đỉnh núi cao nhất của Việt Nam với độ cao tuyệt đối là 3143m | TRUE | | 8 | Hà Nội 63 phố phường | FALSE | | 9 | Bắc Nam một nhà <3 <3 <3 <3 | TRUE | | 10 | Có 20 đời vua Hùng | FALSE | :::success :::spoiler Code ```cpp = 1 #include <bits/stdc++.h> using namespace std; int main() { int n; cin >> n; if (n == 1) cout << "TRUE"; else if (n == 2) cout << "TRUE"; else if (n == 3) cout << "FALSE"; else if (n == 4) cout << "FALSE"; else if (n == 5) cout << "FALSE"; else if (n == 6) cout << "FALSE"; else if (n == 7) cout << "TRUE"; else if (n == 8) cout << "FALSE"; else if (n == 9) cout << "TRUE"; else if (n == 10) cout << "FALSE"; return 0; } ``` ::: ## Bài C: Tết của Tèo Câu chuyện của Tèo rất dài, nhưng mấu chốt của bài toán nằm ở câu văn sau `"Thật ra trong mơ, Tèo chỉ đang thực hiện chia dư số mà cậu tưởng tượng ra cho số hai mươi triệu hai trăm năm mươi hai nghìn không trăm hai mươi lăm mà thôi"` Như vậy, đáp án của bài toán đơn giản là $n \bmod 20252025$. :::success :::spoiler Code ```cpp = 1 #include <bits/stdc++.h> using namespace std; int main() { long long n; cin >> n; cout << n % 20252025; return 0; } ``` ::: ## Bài D: 72 xin chào Nếu xem xét kỹ, sẽ nhận ra đáp án tương ứng với một số $n$ là từ cuối cùng của tên tỉnh thành có biển số xe là $n$. Ví dụ: - ==Vũng Tàu== có biển số xe là ==72==. Do đó, khi nhập `72` chương trình trả về `Tau`. - ==Hà Nội== có biển số xe là ==29, 30, 31, 32, 33 và 40==. Do đó, khi nhập `29` và `32` chương trình trả về `Noi`. Như vậy cần lưu sẵn tên của tỉnh thành ứng với mọi giá trị biển số xe. Để tối ưu thời gian, thay vì nhập tay từng giá trị, ta có thể sử dụng công cụ Chat GPT để khai báo một mảng hằng. :::success :::spoiler Code ```cpp = 1 #include <bits/stdc++.h> using namespace std; int main() { vector<string> res = {"#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "Bang", "Son", "#", "Ninh", "Phong", "Phong", "Binh", "Dinh", "Tho", "Nguyen", "Bai", "Quang", "Giang", "Cai", "Chau", "La", "Bien", "Binh", "Noi", "Noi", "Noi", "Noi", "Noi", "Duong", "Binh", "Hoa", "An", "Tinh", "Nai", "Noi", "Minh", "#", "Nang", "#", "#", "#", "Lak", "Nong", "Dong", "Minh", "Minh", "Minh", "Minh", "Minh", "Minh", "Minh", "Minh", "Minh", "Minh", "Nai", "Duong", "An", "Giang", "Long", "Tho", "Thap", "Giang", "Giang", "Mau", "Ninh", "Tre", "Tau", "Binh", "Tri", "Hue", "Ngai", "Dinh", "Yen", "Hoa", "#", "Lai", "Tum", "Trang", "Vinh", "Thuan", "Thuan", "#", "Phuc", "Yen", "Nam", "#", "Nam", "Phuoc", "Lieu", "Giang", "#", "Can", "Giang", "Ninh"}; int n; cin >> n; cout << res[n]; return 0; } ``` ::: ## Bài E: Trò chơi tuổi thơ Trò chơi mang tính trí tuệ nhất trong lịch sử nhân loại được nhắc đến trong đề bài, thực chất chỉ là một ==trò chơi tuổi thơ== (đây là gợi ý quan trọng ở ngay trên tên đề bài). Trò chơi đó chính là ==Kéo, Búa, Bao== và được mô tả trong bài này như sau: - `8<` biểu tượng cho ==Kéo==. - `-]` biểu tượng cho ==Búa==. - `()` biểu tượng cho ==Bao==. Để phân định thắng thua cho hai người chơi, chỉ cần tính số trận thắng của người 1 và số trận thắng của người 2, sau đó so sánh. :::success :::spoiler Code ```cpp = 1 #include <bits/stdc++.h> using namespace std; int main() { string s, t; cin >> s >> t; //Số điểm của người 1 và người 2 ban đầu đều bằng 0 int a = 0, b = 0; for (int i = 0; i < s.size(); i += 2) { if (s[i] == '8') { if (t[i] == '(') { a++; } else if (t[i] == '-') { b++; } } if (s[i] == '(') { if (t[i] == '-') { a++; } else if (t[i] == '8') { b++; } } if (s[i] == '-') { if (t[i] == '8') { a++; } else if (t[i] == '(') { b++; } } } //So sánh số điểm của người 1 và người 2 if (a == b) { cout << 0; } else if (a > b) { cout << 1; } else { cout << 2; } return 0; } ``` ::: ## Bài F: 21 Đề bài đã đánh lừa thí sinh rằng dãy số nhập vào từ input là mã [OEIS](https://oeis.org/?language=english) của một dãy số nào đấy, và chương trình cần phải in ra số đầu tiên của dãy. ==Đáng chú ý là==, test ví dụ đã đóng vai trò rất lớn trong "cú lừa thế kỷ" này, vì output đều trùng khớp với số đầu tiên của dãy số tra cứu được trên OEIS. Thực chất, như tên bài ==21== đã gợi ý, dãy số đề cho là dãy các lá bài trong trò chơi ==Blackjack== (hay ==Xì dách==) và kết quả chương trình trả về là tổng số điểm của các lá bài. :::warning **Nhận xét:** - Có thể khẳng định `A` có số điểm là 1 vì nếu không thì sẽ không thể rút đến 7 lá. - Trong bộ bài tây không có lá bài số 1, mà chỉ có lá bài 10, tượng trưng cho các lá `J`, `Q`, `K`. ::: :::success :::spoiler Code ```cpp = 1 #include <bits/stdc++.h> using namespace std; int main() { string s; cin >> s; int res = 1; for (int i = 1; i < s.size(); i++) { if (s[i] == '1') { res += 10; } else { res += (s[i] - '0'); } } cout << res; return 0; } ``` ::: ## Bài G: CONG? ![cong](https://hackmd.io/_uploads/BkJf-NFd1l.jpg) Hình ảnh ==con công== chỉ nhằm mục đích đánh lừa thí sinh. Các test ví dụ cũng đã hoàn thành rất tốt nhiệm vụ này. Đề bài thật ra là ==cong== chứ không phải ==công==. Yêu cầu của bài toán là in ra `YES` nếu trong xâu đề bài cho có tồn tại ít nhất một ký tự bị **"cong"** - nghĩa là thuộc một trong các ký tự sau: `B`, `C`, `D`, `G`, `J`, `O`, `P`, `Q`, `R`, `S`, `U`. Ngược lại in ra `NO`. :::success :::spoiler Code ```cpp = 1 #include <bits/stdc++.h> using namespace std; int main() { string s; cin >> s; for (int i = 0; i < s.size(); i++) { if (s[i] == 'B' || s[i] == 'C' || s[i] == 'D' || s[i] == 'G' || s[i] == 'J' || s[i] == 'O' || s[i] == 'P' || s[i] == 'Q' || s[i] == 'R' || s[i] == 'S' || s[i] == 'U') { cout << "YES"; return 0; } } cout << "NO"; return 0; } ``` :::