Đây là một bài kỹ thuật lập trình khá thú vị mà tôi vừa thấy trên HackerRank. Bài toán được xếp ở mức Easy, nhưng thú thật là ban đầu tôi có hơi lúng túng khi đọc mô tả của đề bài vì nó cố tình được viết để khiến chúng ta phải rối trí và suy nghĩ theo định hướng của đề.
Trước khi đi vào phân tích bằng tiếng Việt, hãy cùng đọc qua đề gốc cùng các test case ví dụ.
Bạn đọc xong rồi chứ? Đề bài mới đọc qua thì cảm giác khá phức tạp, nhưng chỉ cần một chút suy nghĩ, bạn sẽ thấy vấn đề thực ra đơn giản hơn rất nhiều, chỉ là do cái đề bài mô tả quá vòng vo mà thôi. Những điểm cần lưu ý:
- Brie chỉ có thể bắt đầu lật từ đầu hoặc cuối cuốn sách.
- Mỗi lần lật, bất kể từ đầu hay cuối, chúng ta đều đi qua 2 trang sách.
- Số lần lật tối đa để đi hết quyển sách (từ đầu hoặc cuối) sẽ là n/2, với n là tổng số trang sách.
- Tương tự, số lần lật tối đa để đi từ đầu tới trang p sẽ là p/2, tạm gọi là left.
- Vậy, số lần lật tối đa để đi từ cuối tới trang p sẽ là (n - p)/2 = n/2 - p/2, tạm gọi là right.
- Giữa left và right, số nào nhỏ hơn thì sẽ trả về số đó.
OK, tới đây là xong, hãy bắt đầu viết code thôi:
#include <stdio.h>
int pageCount(int n, int p) {
int total = n/2;
int left = p/2;
int right = n/2 - p/2;
return left < right ? left : right;
}
int main()
{
int n, p;
scanf("%d %d", &n, &p);
printf("%d", pageCount(n, p));
return 0;
}
💻
Nhận dạy online 1 kèm 1 Automation Test từ cơ bản tới nâng cao (From Zero to Hero) 😁😁😁
Lộ trình gồm 3 phần:
1) Kỹ thuật lập trình và tư duy lập trình cơ bản
2) Nhập môn kiểm thử (Manual Test)
3) Kiểm thử tự động (Automation Test) + Chuẩn bị cho phỏng vấn
* Lộ trình chi tiết:
Xem tại đây
🎓
Đối tượng người học:
- Những bạn bị mất gốc căn bản môn lập trình.
- Những bạn muốn theo con đường kiểm thử (testing), đặc biệt là kiểm thử tự động (Automation Test).
🦘
Người giảng dạy:
- Mình sẽ là người trực tiếp hướng dẫn.
- Nếu là các vấn đề ngoài chuyên môn hoặc sở trường, mình sẽ nhờ các anh chị em khác cũng làm trong ngành.
🤓
Giới thiệu:
- Mình đã có hơn 10 năm kinh nghiệm làm IT ở cả trong và ngoài nước. Trong đó 3 năm đầu là làm lập trình viên Java, sau đó bén duyên với mảng Automation Test và theo nghề tới tận bây giờ. Mình được đào tạo chính quy về IT từ một trường Đại học danh tiếng ở TP.HCM (hệ kỹ sư 4 năm rưỡi), có chứng chỉ ISTQB, có thể giao tiếp tốt bằng tiếng Anh và có kinh nghiệm làm việc thực tế ở cả 2 mảng Outsource và Product. Title chính thức của mình là QA Automation Engineer, tuy nhiên, mình vẫn làm những dự án cá nhân chuyên về lập trình ứng dụng như
Học Tiếng Anh Streamline và
Sách Nhạc. Mình là người có thái độ làm việc chuyên nghiệp, chăm chỉ và luôn nhiệt tình trong công việc.
💵
Chi phí và hình thức thanh toán:
- Các bạn vui lòng liên hệ qua email
songtoigianvn@gmail.com (email, chat, hoặc call) để book nội dung và khung giờ học (từ 8h tối trở đi).
- Mức phí: 150.000đ/buổi, mỗi buổi 60 phút.
-
Lộ trình From Zero to Hero: 4.350.000đ (29 buổi).
- Bạn có thể học riêng và đóng tiền theo từng phần nếu muốn.
- Có thể học trước 1-2 buổi trước khi quyết định đi full lộ trình hoặc từng phần.
- Thanh toán qua Momo, chuyển khoản v.v...