# Các bài tập khác ## Biểu diễn nhị phân Cho số nguyên dương n, hãy chuyển đổi n về dạng nhị phân. ### Dữ liệu Tệp `BIN.INP` gồm một dòng duy nhất ghi số n. ### Kết quả Tệp `BIN.OUT` gồm một dòng ghi biểu diễn nhị phân của n. ### Giới hạn n ≤ 1018. ### Ví dụ | BIN.INP | BIN.OUT | | :-----: | :-----: | | 109 | 1101101 | ## DiffSum Lập chương trình phân tích số nguyên dương n thành tổng của các số nguyên dương khác nhau sao cho tích của các số hạng này là lớn nhất có thể. ### Dữ liệu Tệp `DIFFSUM.INP` gồm một dòng duy nhất ghi số n. ### Kết quả Tệp `DIFFSUM.OUT` ghi các số hạng của cách phân tích tìm được theo thứ tự tăng dần trên một dòng. ### Giới hạn n ≤ 105. ### Ví dụ | DIFFSUM.INP | DIFFSUM.OUT | | :---------: | :---------: | | 5 | 2 3 | | 10 | 2 3 5 | ## Tìm dãy số nguyên liên tiếp Cho dãy gồm n số tự nhiên đôi một khác nhau a1, a2, …, an. Nếu trong dãy đã cho có chứa số 0, bạn được phép thay số 0 bằng một số nguyên dương bất kì khác. ### Yêu cầu Hãy chọn trong dãy gồm nhiều nhất các số sao cho các số đã chọn tạo thành một dãy số tự nhiên liên tiếp. ### Dữ liệu Tệp `LSEQ.INP`: * Dòng thứ nhất chứa số nguyên dương n. * Dòng thứ hai dãy số tự nhiên a1, a2, …, an. ### Kết quả Tệp `LSEQ.OUT` gồm một dòng duy nhất ghi độ dài lớn nhất của dãy số tự nhiên liên tiếp chọn được. ### Giới hạn * n ≤ 106. * ai ≤ 106 ∀ 1 ≤ i ≤ n. ### Ví dụ | LSEQ.INP | LSEQ.OUT | Giải thích | | ------------------ | :------: | ------------------------------------ | | 5
2 9 3 7 4 | 3 | Chọn dãy 2, 3, 4 | | 7
1 2 4 7 6 0 8 | 5 | Thay 0 bởi 5, chọn dãy 4, 5, 6, 7, 8 | ## Tìm đoạn thẳng v2 Trên 1 đoạn trục số [−c, c], cho N đoạn thẳng, đoạn thứ i là [ai, bi]. ### Yêu cầu Cho một điểm M với toạ độ x. Hãy cho biết M thuộc bao nhiêu đoạn thẳng đã cho ở trên, và cụ thể là những đoạn nào? Nếu M không thuộc đoạn nào trong các đoạn đã cho, hãy chỉ ra 1 đoạn dài nhất chứa điểm M và không có điểm trong chung với bất kì đoạn nào trong N đoạn đã cho (không có điểm chung ngoài hai điểm đầu mút). ### Dữ liệu Tệp `INTERVAL.INP`: * Dòng thứ nhất ghi ba số nguyên N, c và x. * N dòng tiếp theo, dòng thứ i + 1 ghi hai số nguyên ai, bi. ### Kết quả Tệp `INTERVAL.OUT` gồm hai dòng: * Dòng thứ nhất ghi số tự nhiên K là số đoạn chứa điểm M. * Dòng thứ hai: * Nếu K dương, ghi K số là số thứ tự của K đoạn chứa M. * Nếu K = 0, ghi hai số nguyên là toạ độ hai đầu mút của đoạn thẳng dài nhất chứa M và không có điểm trong chung với N đoạn đã cho. ### Giới hạn * 1 ≤ N ≤ 105. * |x| ≤ c ≤ 109. * |ai|, |bi| ≤ c ∀ 1 ≤ i ≤ N. ### Ví dụ | INTERVAL.INP | INTERVAL.OUT | | ----------------------------------- | ------------ | | 4 20 2
1 3
2 4
7 10
0 1 | 2
1 2 | | 3 10 5
1 2
-4 4
6 9 | 0
4 6 | ## Phân tích số Cho hai số nguyên dương n và m. Tìm số tự nhiên k lớn nhất sao cho n! chia hết cho mk. ### Dữ liệu Tệp `FDP.INP` gồm một dòng ghi hai số nguyên dương n và m. ### Kết quả Tệp `FDP.OUT` gồm một dòng duy nhất ghi số tự nhiên k. ### Giới hạn * n ≤ 1018. * 2 ≤ m ≤ 1012. ### Ví dụ | FDP.INP | FDP.OUT | | :-----: | :-----: | | 10 10 | 2 | | 100 15 | 24 | ## Vòng xoắn số nguyên Cho số nguyên dương n. Viết các số từ 1 đến n theo hình xoắn trôn ốc chữ nhật nằm ngang vuông nhất có thể. ### Dữ liệu Tệp `SPIRAL.INP` gồm một dòng duy nhất ghi số nguyên dương n. ### Kết quả Tệp `SPIRAL.OUT` ghi vòng xoắn trôn ốc. ### Giới hạn n ≤ 106. ### Ví dụ | SPIRAL.INP | SPIRAL.OUT | | ---------- | -------------------------------- | | 12 | 1 2 3 4
10 11 12 5
9 8 7 6 | ## Từ điển Cho một từ điển gồm n từ w. Với q truy vấn, mỗi truy vấn đưa ra một xâu s, đếm xem có bao nhiêu từ có tiền tố là s. ### Dữ liệu Tệp `DICT.INP` gồm n + q + 2 dòng: * Dòng thứ nhất ghi một số nguyên n, số lượng từ của từ điển. * Dòng 2 đến n + 1: Mỗi dòng gồm một xâu kí tự w là một từ thuộc từ điển. * Dòng n + 2: Gồm một số nguyên là số q, số lượng truy vấn. * Dòng n + 3 đến n + q + 2: Mỗi dòng gồm một xâu kí tự s mô tả một tiền tố cần đếm. ### Kết quả Tệp `DICT.OUT` gồm q dòng, mỗi dòng gồm một số nguyên là câu trả lời cho truy vấn tương ứng. ### Giới hạn * 1 ≤ n, q ≤ 20000. * 1 ≤ Độ dài w, s ≤ 20. * Các xâu w, s gồm các chữ cái in thường (từ `a` đến `z`). ### Ví dụ `DICT.INP`: 4 banana ban baconsoi alibaba 4 ban ba ali baba `DICT.OUT`: 2 3 1 0 #### Giải thích: * 2 từ có tiền tố `ban` là: `banana`, `ban`. * 3 từ có tiền tố `ba` là: `banana`, `ban`, `baconsoi`. * 2 từ có tiền tố `ali` là: `alibaba`.