BIẾT KẾT QUẢ NGAY SAU KHI NỘP BÀI - NÂNG CAO KĨ NĂNG TỰ HỌC
BIẾT KẾT QUẢ NGAY SAU KHI NỘP BÀI - NÂNG CAO KĨ NĂNG TỰ HỌC
VNOJ Online Judge là nền tảng học tập và rèn luyện tư duy toán học, giúp học sinh phát triển khả năng lập luận logic thông qua việc giải quyết các bài toán bằng các ngôn ngữ lập trình khác nhau. Hệ thống hỗ trợ nhiều ngôn ngữ như: Pascal, C, C++, Java, Python, Scratch...
Tuy nhiên, VNOJ.IO.VN lựa chọn C++ làm ngôn ngữ trọng tâm phù hợp với học sinh THCS–THPT, góp phần rèn luyện tư duy toán học và lập luận logic, đồng thời giúp các em dễ dàng tiếp cận các ngôn ngữ lập trình khác sau này. Hiện tại cũng có thể chọn nộp bằng Pascal, C, Python, Java, C#, Scratch...
Hướng dẫn giải của Bai1. TRÒ CHƠI (5,0 điểm; Đề HSG9 tỉnh Tuyên Quang 2025-2026)
Nộp một lời giải chính thức trước khi tự giải là một hành động có thể bị ban.
Hướng dẫn giải
Gọi x là số đội 5 học sinh và y là số đội 3 học sinh. Khi đó ta có phương trình nghiệm nguyên:
5x + 3y = n, x ≥ 0, y ≥ 0.
Tổng số đội là:
x + y.
Muốn số đội ít nhất thì cần chọn x (số đội 5 học sinh) lớn nhất có thể.
Từ phương trình:
5x + 3y = n
Lấy hai vế theo modulo 3:
5x ≡ n (mod 3).
Do:
5 ≡ 2 (mod 3),
suy ra:
2x ≡ n (mod 3).
Vì 2 là nghịch đảo của chính nó theo modulo 3 nên:
x ≡ 2n (mod 3).
Đặt:
q = ⌊n / 5⌋.
Ta cần tìm giá trị lớn nhất x ≤ q và thỏa mãn:
x ≡ 2n (mod 3).
Đặt:
r = (2 * (n % 3)) % 3;
d = (q % 3 - r + 3) % 3;
x = q - d;
Nếu x < 0 thì không tồn tại cách chia đội, in -1.
Ngược lại:
y = (n - 5x) / 3.
Đáp án là:
x + y.
Độ phức tạp:
- Thời gian: O(1) cho mỗi test.
- Bộ nhớ: O(1).
Bình luận