You are on page 1of 8

1. Bài (7 điểm): K chữ số cuối Tên file chương trình NumberKR.???

Cho 3 số nguyên dương a, n, k.


Yêu cầu: xác định k chữ số cuối cùng của an
Dữ liệu vào: file NUMBERKR.INP
- Một dòng duy nhất chứa 3 số nguyên a, n, k (1 < a, n ≤ 106 , 0 < k < 10 )
Kết quả: ghi vào file NUMBERKR.OUT
- Một số nguyên duy nhất là kết quả tìm được theo yêu cầu
Ví dụ:
NUMBERKR.INP NUMBERKR.OUT
11 3 2 31
3
11 = 1331 ; với k=2 nên 2 chữ số cuối của kết quả là 31
2. Bài (7 điểm): Trò chơi nối điểm Tên chương trình: CONP.???
Thiện là một cậu bé rất thông minh và cũng rất thích tính toán. Ba của cậu liền đưa ra bài toán liên
quan đến tính toán để thử tài trí thông minh của cậu. Ba cậu viết ra n số nguyên a1, a2, …, an tương tứng
lần lượt là hoành độ của các điểm P1, P2, …, Pn trên mặt phẳng tọa độ Oxy. Thiện cũng nhận được một
dãy n số nguyên b1, b2, …, bn.
Nhiệm vụ của Thiện là với các điểm P1(a1, ?), P2(a2, ?), …, Pn(an, ?) còn thiếu tung độ. Thiện cần phải
chọn các số nguyên trong dãy số nguyên b mà cậu nhận được để điền vào phần tung độ còn thiếu (mỗi
số chỉ được chọn một lần). Sau khi chọn xong, cậu phải nối lần lượt qua các điểm đó sao cho tổng độ dài
đường nối là ngắn nhất (P1 nối với P2, P2 nối với P3, …, Pn-1 nối với Pn).
Yêu cầu: Hãy cùng Thiện tìm ra đường nối lần lượt qua các điểm P1, P2,… , Pn sao cho tổng độ dài
đường nối là ngắn nhất.
Dữ liệu: Vào từ file CONP.INP
▪ Dòng đầu là số nguyên dương n (n≤10).
▪ Dòng thứ 2 lần lượt là n số nguyên a1, a2, … , an (|ai|≤109 với i=1, 2, … , n).
▪ Dòng thứ 3 lần lượt là n số nguyên b1, b2, … , bn (|bi|≤109 với i=1, 2, … , n).
Kết quả: Ghi vào file CONP.OUT
- Một số duy nhất tìm được theo yêu cầu (lấy 4 số phần thập phân).
Ví dụ:
CONP.INP CONP.OUT
3 5.0645
024
142
Giải thích: nối lần lượt P1(0, 1), P2(2, 2) và P3(4, 4) với nhau sẽ tạo ra độ dài đường nối ngắn nhất.
3. (6 điểm): Con đường hoa Tên file chương trình FLOLINE.???
Nhằm chuẩn bị cho việc chào đón hội nghị thượng đỉnh Mỹ-Triều tại thành phố Hà Nội. Trên một
con đường dài của thành phố người ta bố trí một hàng gồm N chậu hoa trong đó gồm T chậu hoa màu
trắng và V chậu hoa màu vàng. Người ta tin nếu sắp xếp N chậu hoa thành một hàng đảm bảo có
đúng hai chậu hoa màu vàng đứng cạnh nhau thì sẽ tăng tính thẩm mỹ của hàng cây trên cũng như
mang đến cho sự thành công của hội nghị.
Yêu cầu: Xác định số cách xếp khác nhau của N chậu hoa thỏa mãn yêu cầu đặt ra.
Dữ liệu vào: File FLOLINE.INP
- Một dòng duy nhất chứa 2 số nguyên dương T, V (0 < T; 2 < V, T+V ≤ 64)
Kết quả: File FLOLINE.OUT
- Chứa duy nhất số nguyên dương tìm được theo yêu cầu.
Ví dụ:
FLOLINE.INP FLOLINE.OUT
23 6
Giải thích: Giả sử có M=2 chậu hoa màu trắng và N=3 chậu hoa màu vàng, khi đó có tất cả
là 6 cách xếp khác nhau thỏa màn yêu cầu bài toán: : TVTVV, VTTVV, TVVTV, VTVVT, VVTTV,
VVTVT trong đó T-màu trắng, V-màu vàng.
4. Bội số của 13(Mul13.*)
Cho biết hai số nguyên 𝐿 𝑣à 𝑅(𝐿 ≤ 𝑅).
Yêu cầu: Hãy tính tổng của tất cả các số không chia hết cho 13 thuộc đoạn [𝐿, 𝑅]
Đầu vào:
+ Một dòng chứa hai số nguyên 𝐿, 𝑅 cách nhau một dấu cách (0 ≤ 𝐿 ≤ 𝑅 ≤ 109 )
Đầu ra:
+ In ra tổng của tất cả các số thuộc phạm vi [𝐿, 𝑅] mà không chia hết cho 13.
Ví dụ:
Mul13.inp Mul13.out
1 20 197
100 200 13954
5. Dãy số(Seq.*)
Trong một dãy các số tự nhiên liên tiếp, ta thấy có một số số lẻ và một số số chẵn. Ví dụ: dãy [2, 3, 4, 5, 6]
thì có 3 số chẵn và 2 số lẻ, dãy [5] thì có 0 số chẵn và 1 số lẻ.
Yêu cầu: Hãy cho biết có tồn tại dãy số tự nhiên liên tiếp nào có a số chẵn và b số lẻ không?
Dữ liệu vào: Một dòng chứa 2 số tự nhiên 𝑎, 𝑏(0 ≤ 𝑎, 𝑏 ≤ 100) tương ứng là số lượng số chẵn và số
lượng số lẻ trong một dãy số tự nhiên liên tiếp.
Đầu ra: In ra thông báo YES nếu thỏa mãn yêu cầu đề bài, ngược lại in NO
Ví dụ:
Seq.inp Seq.out
23 YES
31 NO
6. Đi xe bus(Bus.*)
An thường đi học bằng xe bus. Biết rằng giá vé thông thường đi xe bus có giá 𝑎 đồ𝑛𝑔/𝑣é. Bên cạnh đó,
An biết rằng công ty xe bus có bán loại vé đặc biệt cho phép đi xe bus 𝑚 lần (và có thể mua nhiều lần)
với giá 𝑏 đồ𝑛𝑔/𝑣é. An cần sử dụng xe bus 𝑛 lần.
Yêu cầu: Hãy giúp An tính toán cách mua vé xe bus tiết kiệm nhất.
Dữ liệu vào: Đọc vào từ file Bus.inp gồm:
+ Một dòng duy nhất chứa bốn số nguyên cách nhau bởi dấu cách 𝑚, 𝑛, 𝑎, 𝑏 tương ứng với số lần đi xe bus
An cần đi, số lần đi xe bus bằng một vé đặc biệt, giá một vé bình thường và giá một vé đặc biệt.
Ràng buộc:
1 ≤ 𝑛, 𝑚, 𝑎, 𝑏 ≤ 1000
Kết quả: Ghi ra file Bus.out: một số nguyên duy nhất – số tiền tối thiểu mà An sẽ phải chi tiêu.
Ví dụ:
Bus.inp Bus.out
6212 6
5223 8
7. Alibaba lấy vàng(Alibaba.*)
Hôm nay, Alibaba lại vào hang của 40 tên cướp để lấy trộm vàng. Trong hang có 𝑛 túi vàng, trong túi
vàng thứ 𝑖 có 𝑎[𝑖] đồng tiền vàng. Anh ta muốn lấy nhiều tiền vàng nhất có thể. Tuy nhiên, lần này, Thần
giữ cửa hang yêu cầu Alibaba yêu cầu anh ta chỉ được lấy số tiền vàng là một số chẵn.
Yêu cầu: Hãy giúp Alibaba tính toán để lấy được số tiền vàng nhiều nhất.
Dữ liệu: đọc vào từ file Alibaba.inp gồm:
+ Dòng đầu tiên chứa một số nguyên 𝑛 là số túi vàng trong hang.
+ Dòng tiếp theo chứa n số nguyên cách nhau bởi dấu cách 𝑎[1], 𝑎[2], … , 𝑎[𝑛] lần lượt là số tiền vàng
trong mỗi túi.
Ràng buộc:
1 ≤ 𝑛 ≤ 105 ; 1 ≤ 𝑎[𝑖] ≤ 109 ; 𝑖 = 1. . 𝑛
Kết quả: ghi ra file Alibaba.out: Số đồng tiền vàng tối đa và là số chẵn mà Alibaba có thể lấy.
Ví dụ:
Alibaba.inp Alibaba.out
3 6
123
5 3999999996
999999999 999999999 999999999 999999999
999999999
8. Phần tử lớn thứ nhì (TheSecondEle.*)
Nhập vào N số nguyên và in số nguyên lớn thứ nhì trong các số đã nhập. Nếu các số bằng nhau thì coi
như số lớn thứ nhì bằng số lớn nhất.
Đầu vào:
+ Dòng đầu chứa số nguyên N
+ Dòng sau, chứa N số nguyên cách nhau một dấu cách.
Ràng buộc:
+ 1 ≤ 𝑁 ≤ 106 .
+ Các số nguyên có giá trị tuyệt đối không quá 109
Đầu ra: In ra số nguyên lớn thứ nhì trong số các số nguyên đã nhập.
Ví dụ:
Input Output
5 4
51234
9. Số phong phú(RichNum.*)
Số N được gọi là số phong phú nếu như N nhỏ hơn tổng các ước của nó( không kể chính nó)
Ví dụ: N=12 có 5 ước không kể chính nó là: 1, 2, 3, 4, 6 và N=12< 1+2+3+4+6=16. Như vậy N là số
phong phú.
Yêu cầu: Nhập vào 1 số N, kiểm tra xem N có phải là số phong phú không?
Đầu vào: Một dòng duy nhất chứa số nguyên dương N
Ràng buộc: 1 ≤ 𝑁 ≤ 2 ∗ 109
Đầu ra: In ra số 1 nếu N là số phong phú, ngược lại thì in ra số 0.
Ví dụ:
Input Output
12 1
28 0
10. Chia kẹo(Candy.*)
Cô giáo muốn chia kẹo cho N bạn học sinh. Giả sử các bạn học sinh được đánh số từ 1 đến N. Học sinh
thứ 𝑖 muốn nhận ít nhất 𝑎[𝑖]chiếc kẹo. Cô giáo yêu cầu các bạn xếp hàng, Bạn thứ I đứng ở vị trí thứ I
trong hàng. Cô bắt đầu chia theo qui tắc sau:
+ Tặng m chiếc kẹo cho học sinh đầu hàng
+ Nếu một em vẫn chưa nhận đủ số kẹo mình muỗn thì em đó sẽ di về xếp ở cuối hàng và chờ tới lượt sau,
ngược lại thì em đó sẽ dời khỏi hàng.
+ Việc chia kẹo của cô giáo sẽ lặp lại cho đến khi nào không còn em học sinh nào ở trong hàng.
Yêu cầu: Hãy cho cô giáo biết em học sinh nào sẽ là người cuối cùng trong hàng.
Dữ liệu vào: đọc từ file Candy.inp gồm:
+ Dòng đầu chứa 2 số nguyên n, m cách nhau bới dấu cách.
+ Dòng thứ 2 chứa n số nguyên 𝑎[1], 𝑎[2], … , 𝑎[𝑛] cách nhau bởi dấu cách.
Ràng buộc:
1 ≤ 𝑛, 𝑚 ≤ 100; 1 ≤ 𝑎[𝑖] ≤ 100, 𝑖 = 1. . 𝑛
Kết quả: Ghi ra file Candy.out: In ra số nguyên duy nhất đại diện cho học sinh cuối cùng đứng trong
hàng.
Ví dụ:
Candy.inp Candy.out
52 4
13142
64 6
112233
Giải thích:
Ở ví dụ thứ 1: em thứ 1 nhận được 2 chiếc kẹo → dời khỏi hàng; em thứ 2 nhận được 2 chiếc kẹo rồi di
chuyển về cuối hàng, lúc này hàng sẽ là [3, 4, 5, 2]. Sau đó em thứ 3 nhận 2 chiếc kẹo và rời khỏi hàng.
Em thứ 4 được 2 chiếc kẹo và di chuyển về phía cuối hàng. Lúc này hàng là [5, 2, 4]. Sau đó em thứ 5
nhận được 2 chiếc kẹo và rời khỏi hàng, em thứ 2 tiếp tục nhận 2 chiếc kẹo nữa và rời khỏi hàng. Như
vậy cuối cùng chỉ còn em số 4 ở lại nhận 2 chiếc kẹo cuối cùng và rời hàng sau cùng.
11. Bộ ba số nguyên tố(DPRIME.*)
Cho số tự nhiên N. Hãy lập trình tìm tất cả bộ ba số nguyên tố 𝑥, 𝑦, 𝑧 thỏa mãn:
𝑥<𝑦<𝑧≤𝑁
{ 2
𝑥 + 𝑦2 = 𝑧
Dữ liệu: Đọc vào từ file DPRIME.INP:
− Một số nguyên dương duy nhất
Kết quả: Ghi ra file DPRIME.OUT:
− Nếu không tìm được bộ 3 số nguyên tố thỏa mãn yêu cầu thì ghi -1. Ngược lại thì in ra một số dòng, mỗi
dòng chứa một bộ ba số nguyên tố tìm được. Các dòng được in theo trật tự ưu tiên tăng dần của số thứ
nhất, số thứ hai và số thứ 3.
Ràng buộc:
• 40% số test với 0 ≤ 𝑁 ≤ 100;
• 30% số test với 100 ≤ 𝑁 ≤ 5000;
• 30% số test với 5000 ≤ 𝑁 ≤ 109
Ví dụ:
DPRIME.INP DPRIME.OUT
30 2 3 13
2 5 29
10 -1
12. Tính tổng dãy số(SEQSUM.*)
Cho số nguyên dương N. Hãy tính giá trị 𝑓 (𝑁) = −1 + 2 − 3 + ⋯ + 𝑁 ∗ (−1)𝑁
Dữ liệu: Đọc vào từ file SEQSUM.INP gồm:
− Một dòng chứa số nguyên dương N.
Kết quả: Ghi ra file SEQSUM.OUT:
− Giá trị của 𝑓(𝑁)
Ràng buộc:
• 1 ≤ 𝑁 ≤ 1015 ; 𝑐ó 50% đ𝑖ể𝑚 𝑠ố 𝑣ớ𝑖 𝑁 ≤ 106
Ví dụ:
SEQSUM.INP SEQSUM.OUT
4 2
5 -3
13. Rùa đi chơi (Turtle.*)
Trên mặt phảng có tọa độ 𝑂𝑥𝑦, Rùa sống tại điểm có tọa độ (0, 0), Thỏ sống tại điểm có tọa độ (𝑎, 𝑏).
Hôm nay Rùa quyết định sẽ đến nhà Thỏ chơi. Rùa đi chậm nên trong mỗi bước, Rùa chỉ có thể di chuyển
1 đơn vị độ dài theo 1 trong các hướng ngang hoặc dọc. Nói cách khác, từ vị trí (𝑥, 𝑦) Rùa chỉ có thể đi
đến 1 trong các vị trí (𝑥 + 1, 𝑦), (𝑥 – 1, 𝑦), (𝑥, 𝑦 + 1) hoặc (𝑥, 𝑦 − 1).
Rùa khá kém trong việc xác định hướng. Vì vậy, cậu ta chọn ngẫu nhiên hướng đi trong mỗi bước. Rùa
có thể vô tình quay về nhà trong chuyến đi của mình, thậm chí có thể không biêt rằng đã đến nhà Thỏ tại
điểm (𝑎, 𝑏) mà vẫn tiếp tục đi.
May mắn là, cuối cùng Rùa cũng đến đúng nhà Thỏ tại vị trí (𝑎, 𝑏). Rùa nói với Thỏ rằng mình đã đi
đúng S bước để đến nhà Thỏ. Tuy nhiên, Thỏ không tin tưởng và muốn kiểm tra xem Rùa nói đúng hay
không?
Yêu cầu: Hãy giúp Thỏ kiểm tra số bước của Rùa đúng hay không
Dữ liệu: Đọc vào từ file TURTLE.INP:
− Một dòng chứa 3 số nguyên 𝑎, 𝑏 𝑣à 𝑠.
Kết quả: Ghi ra file TURTLE.OUT:
- Nếu Rùa đúng thì ghi ra Yes ngược lại thì in ra No
Ràng buộc:
−109 ≤ 𝑎, 𝑏 ≤ 109 , 1 ≤ 𝑠 ≤ 2 ∗ 109
Ví dụ:
TURTLE.INP TURTLE.OUT
5 5 11 No
10 15 25 Yes
051 No
002 Yes
14. EXP.*
Cho 𝑁 số tự nhiên 𝐴1 , 𝐴2 , . . . , 𝐴𝑛 . Ban đầu các số được đặt liên tiếp theo đúng thứ tự cách nhau bởi dấu ?:
𝐴1 ? 𝐴2 ? . . ? 𝐴𝑛 .
Cho trước số nguyên 𝑆, có cách nào thay thế các dấu ? bằng dấu + hay dấu – để được 1 biểu thức số học
cho giá trị là 𝑆 hay không?
Dữ liệu: Vào từ file EXP.INP gồm:
− Dòng đầu tiên là số 𝑁(1 ≤ 𝑁 ≤ 500)
− Dòng 2 gồm N số là các phần từ 𝐴𝑖 (1 ≤ 𝐴𝑖 ≤ 50)
− Dòng 3 là 1 số 𝑆 (−25000 ≤ 𝑆 ≤ 25000)
Kết quả: Ghi ra file EXP.OUT chữ Yes nếu tồn tại được 1 cách thỏa mãn, ngược lại ghi No.
Ví dụ:
EXP.INP EXP.OUT
4 Yes
1234
4
5 No
23145
14
15. SPSEQ.*
Một dãy được xem là dãy đẹp nếu nó là 1 dãy các số nguyên dương và có các đặc điểm sau:
− Độ dài của 1 dãy là 1 số lẻ: 𝐿 = 2 ∗ 𝑁 + 1
− 𝑁 + 1 số nguyên đầu tiên của dãy tạo thành 1 dãy tăng
− 𝑁 + 1 số nguyên cuối của dãy tạo thành 1 dãy giảm
− Không có 2 số nguyên nào cạnh nhau trong dãy có giá trị bằng nhau.
Ví dụ: 𝟏, 𝟐, 𝟑, 𝟒, 𝟓, 𝟒, 𝟑, 𝟐, 𝟏 là 1 dãy đẹp có độ dài 9. Tuy nhiên dãy 𝟏, 𝟐, 𝟑, 𝟒, 𝟓, 𝟒, 𝟑, 𝟐, 𝟐 không phải là
dãy đẹp.
Yêu cầu: trong các dãy con của dãy số cho trước, tìm dãy đẹp có độ dài dài nhất.
Dữ liệu: vào từ file SPSEQ.INP gồm:
− Dòng 1: số nguyên dương 𝑁(𝑁 ≤ 105 ) là độ dài dãy số.
− Dòng thứ 2 chứa N số nguyên dương 𝑎𝑖 (𝑎𝑖 ≤ 109 ).
Kết quả: Ghi ra file SPSEQ.OUT một số nguyên dương duy nhất là độ dài của dãy đẹp dài nhất.
Ví dụ:
SPSEQ.INP SPSEQ.OUT
19 9
123212343215412322
1
16. BEADS.*
Đi du lịch ở Vũng Tàu, Tí thường đi dao dọc bờ biển và nhật những vỏ ốc và xâu chúng lại thành 1 chuỗi.
Tí tạo chuỗi ốc theo qui tắc sau: Ban đầu sợi dây chưa có vỏ ốc nào, khi Tí nhặt được 1 vỏ ốc mới, Tí có
thể xâu vào từ 1 trong 2 đầu của sợi dây, hoặc có thể bỏ đi. Cuối cùng chuỗi ốc của Tí tính từ đầu đến
cuối chuỗi, các vỏ ốc có kích thước tăng dần và gồm càng nhiều chuỗi ốc càng tốt.
Yêu cầu: Cho trước 𝐴1 , 𝐴2 , … , 𝐴𝑛 là kích thước của các vỏ ốc mà Tí lần lượt gặp khi đi dọc bờ biển, hãy
tìm các giúp Tí nhặt và xâu chuỗi ốc gồm được nhiều vỏ ốc nhất.
Dữ liệu: vào từ file BEADS.INP gồm:
− Dòng 1 chứa số nguyên dương 𝑛(𝑛 ≤ 105 )
− Dòng 2 chứa 𝑛 số nguyên dương 𝐴1 , 𝐴2 , … , 𝐴𝑛 (𝐴𝑖 ≤ 109 )
Kết quả: Ghi ra file BEADS.OUT: một số nguyên duy nhất là số lượng vỏ ốc trong chuỗi tạo được.
Ví dụ:
BEADS.INP BEADS.OUT
5 4
44531

You might also like