Hướng dẫn cho Đoán số


Chỉ sử dụng khi thực sự cần thiết như một cách tôn trọng tác giả và người viết hướng dẫn này.

Chép code từ bài hướng dẫn để nộp bài là hành vi có thể dẫn đến khóa tài khoản.

Authors: jumptozero

  • Để giao tiếp với máy chấm, ta cần in ra lệnh và có XUỐNG DÒNG. Ví dụ như trong code : cout<<mid<<'\n';

  • Sau khi in ra lệnh giao tiếp với máy chấm, trong trường hợp này là cout<<mid<<'\n';. Ta cần thực hiện lệnh flush. Lệnh này có nghĩa là bắt máy chấm đọc vào câu lệnh mà người dùng nhập. Ở Free Pascal, lệnh này là flush(output). Ở C++, lệnh này là fflush(stdout). Sau khi đã flush, các bạn mới có thể đọc dữ liệu trả về của máy, trong trường hợp này là cin>>s;.

  • Hi vọng các bạn đã hiểu cách thức giao tiếp với máy.

C++
#include<bits/stdc++.h>

using namespace std;
#define ll long long 
int main() {
    ll l = 1, r = (ll)(2e9),mid;
    while (1) {
         mid = (l + r ) / 2;
        cout<<mid<<'\n';
        fflush(stdout);
        string s;
        cin>>s;
        if(s=="SMALLER")
            r = mid - 1;
        else if (s=="BIGGER")
            l = mid+1;
        else break;
    }

    return 0;
}
  • P/s: Ở trên cái đề là "HOLA" nhé, không phải "BINGO" (vì mình đã test rồi).
  • Nếu có gì khó hiểu hoặc sai , mọi người cứ comment nhé.


Bình luận