Banner trang chi tiết

Chữa bài tập số 1 đề thi tin học trẻ bảng A năm 2024

Chào các em,

Trong bài này, thầy Hiếu giới thiệu 1 bài tập lập trình trong đề thi tin học trẻ năm 2024 - bảng A.

 

Phân tích hướng giải:

- Ta để ý 1 lượt đi và về (quay về vị trí đầu tiên) sẽ có 2n - 1 bậc

- Ta xét số dư của k khi chia cho 2n - 1, gọi số dư là r.

- Nếu r < n - 1 ta dễ dàng tìm được vị trí 1 + r

- Nếu r > n - 1 ta cần tính toán bước lùi về một cách hợp lý, ở đây tùy theo tính chẵn, lẻ của số bước lùi về mà ta sẽ có công thức phù hợp.

 

Nhận xét: bài này chủ yếu thiên về toán, không sử dụng nhiều kỹ thuật lập trình. Dưới đây là code C++ tham khảo.

#include <bits/stdc++.h>
using namespace std;

int main ()
{
       long long int n, k, vitri;
       cin >> n;
       cin >> k;
       long long int q;
       vitri = 0;
       long long int r = k % (2*n - 1);
       
       if (r < n) 
       {
              vitri = r + 1;
              
       }
       else {
              q = r - (n - 1);
              if(q % 2 == 0)
              {
                     vitri = n - q;
              }else{
                     vitri = n - 2 - q;
              }
       }
       
       cout << vitri;
       
       return 0;
}


Tin liên quan

Tin cùng loại