Try   HackMD

ALGI Gaudium: Editorial

Gaudium là Contest với mục đích giải trí được tổ chức bởi The Algitect (ALGI Project) nhân dịp Tết Nguyên Đán năm Ất Tỵ 2025.

Bài A: Is 2025 the "year of the snake"?

Image Not Showing Possible Reasons
  • The image was uploaded to a note which you don't have access to
  • The note which the image was originally uploaded to has been deleted
Learn More →

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.

Lưu ý: Cần chính xác cả ký tự in hoa, dấu phẩy, và dấu chấm.

Code
#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
Code
#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à

nmod20252025.

Code
#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 2932 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.

Code
#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.

Code
#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 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.

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.
Code
#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?

Image Not Showing Possible Reasons
  • The image was uploaded to a note which you don't have access to
  • The note which the image was originally uploaded to has been deleted
Learn More →

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.

Code
#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; 
}