#include #include #include using namespace std; /** * Bài toán: No.3508 Divisor Game * Giải pháp: Đếm số lượng ước của N trong đoạn [2, K]. * Độ phức tạp: O(sqrt(N)) */ int main() { long long N, K; if (!(cin >> N >> K)) return 0; long long count = 0; // Tìm các ước của N bằng cách duyệt đến sqrt(N) for (long long d = 1; d * d <= N; ++d) { if (N % d == 0) { // Kiểm tra ước d if (d >= 2 && d <= K) { count++; } // Kiểm tra ước N/d long long other_d = N / d; if (other_d != d) { // Tránh đếm trùng số chính phương if (other_d >= 2 && other_d <= K) { count++; } } } } // Alice thắng nếu tổng số nước đi là số lẻ if (count % 2 != 0) { cout << "Alice" << endl; } else { cout << "Bob" << endl; } return 0; }