Dòng 2: K số nguyên là chỉ số trong dãy ban đầu của các phần tử dãy cont hu được, các số đưa theo trật tự tăng.. Nếu có nhiều cách xóa cho dãy con độ dài K thỏa mãn yêu cầu bài toán thì [r]
(1)TÀI LIỆU ÔN THI TIN HỌC TRẺ KHÔNG CHUYÊN Bài 1: Số hoàn thiện Một số có tổng các ước nhỏ nó chính nó gọi là số hoàn thiện.VD có ước nhỏ nó là 1,2,3 Tổng là 1+2+3=6.Viết chương trình xét xem số n nhập từ bàn phím có phải là số hoàn thiện không Bài 2: Nén chuỗi và giải nén VD: Nhập chuỗi S= ‘AABBBDFFFFGH’ (Từ kí tự trở lên nén) Nén: AA3BD4FGH Nhập chuỗi S=’ AA3BD4FGH’ Giải nén: AABBBDFFFFGH Bài 3: Chuỗi chia hết Nhập vào chuỗi S bao gồm kí tự số và chữ Đếm xem chuỗi S có bao nhiêu số chia hết cho và in các số đó VD: Nhập S= ‘asg35gds67gdgf345hh’ - Có số chia hết cho là: 35, 345 Bài 4: Số nguyên tố đối xứng: Một số nguyên n gọi là số nguyên tố đối xứng thỏa mãn hai tính chất sau: - Số n là số nguyên tố - Số n là số đối xứng (số đối xứng là số ta đọc từ trái qua phải và từ phải qua trái là nhau, ví dụ các số 727, 11411, 131 là các số đối xứng.) Yêu cầu : Viết chương trình nhập vào số nguyên dương a, b (0<a<b<65000) a) Liệt kê màn hình (nếu có) các số nguyên tố đối xứng n (với a<=n<=b), các số cách khoảng trắng b) Thông báo có bao nhiêu số nguyên tố đối xứng đã liệt kê câu a VD : Nhâp a=100, b=150 - Kết câu a : 101 131 - Kết câu b : Co so nguyen to doi xung Bài 5: Đổi tiền Có loại tiền mệnh giá đồng, 10 đồng, 20 đồng và 50 đồng với số lượng tờ tiền là có giới hạn Một người cần đổi M đồng thành các tờ tiền với mệnh giá đã cho Yêu cầu: Viết chương trình nhập vào số tiền M cần đổi (0<M<100000000) Nếu có thể đổi hết M đồng thành các tờ tiền theo mệnh giá đã cho, thì kết là tổng các tờ tiền đổi ít Nếu không đổi thì ghi kết là -1 Dữ liệu vào: Tập tin văn CHANGE.INP gồm dòng chứa số nguyên số cách khoảng trắng, đó số đầu tiên theo thứ tự là số lượng tờ đồng, 10 đồng, 20 đồng và 50 đồng; số thứ là tổng số tiền M (tính đồng) mà người đó cần đổi Dữ liệu ra: Tập tin văn CHANGE.OUT gồm số: - Nếu không đổi thì ghi -1 - Nếu đổi thì ghi tổng số tờ ít VD: CHANGE.INP CHANGE.OUT 2 2 35 3 535 -1 Bài 6: Chuỗi và số Một chuỗi S gồm các kí tự số và chữ Đếm xem chuỗi S có bao nhiêu số và in số lớn sau đã đảo ngược số chuỗi In các phần tử có dạng xy+7 có và in giá trị x và y (x,y>1) VD: S=’sds15sfg120hdg1024hh’ - Có số - Số lớn là 4201 (2) - Các phần tử có dạng xy+7 là: 15 = 2^3+7 Bài 7:Minesweeper Dữ liệu vào: Dữ liệu ra: Min.inp Min.out * *100 … 2210 * 1*10 … 1110 Bài 8: Điền số Cho mảng chiều kích thước n*n Hãy thực điền các số nguyên dương vào bảng theo quy luật sau: -Ô(1;1)(Góc trái trên) -Thứ tự điền theo dòng từ trên xuống và theo cột từ trái sang phải -Giá trị diền vào ô dòng i, cột j phải là số nhỏ chưa xuất dòng i và cột j VD : với n=5 12345 2143 Số nhỏ chưa xuất trên dòng và cột là KQ 12345 21436 34127 43218 56781 Bài 9: Đánh mã số Người ta dùng các chữ cái từ A đến Z để đánh mã số Theo quy tắc sau: Thứ tự mã chữ 1=>A 2=>B 26=>Z 27=>AA 52=>AZ 53=>BB 703=>AAA 704=>AAB Ta cho biết số thứ tự mã chữ hãy xác định mã chữ tương ứng Hoặc ta cho biết mã hãy xác định thứ tự mã chữ đó BÀI 10: Quay xâu ký tự Cho S là xâu gồm không quá 80 ký tự, ký tự là chữ cái bảng chữ cái tiếng anh A-Z,a-z Ta gọi phép dịch chuyển S ký tự là việc chyển ký tự đầu tiên S xuống vị trí cuối cùng Ký hiệu T(S) là xâu thu đc sau phép dịch chuyển S ký tự Cho trước xâu S và số nguyên dương N<10100 vd: TRANSTR.INP TRANSTR.OUT puterCom Computer (3) Bài 11: Số nguyên tố ghép: Xét dãy số A các sô nguyên tố: 2, 3, 5, 7, 11, 13, 17, 19,… Và dãy B gồm các số thu từ dãy A cách ghép số liên tiếp A: 23, 57, 1113, 1719,… Trong dãy B có phần tử là số nguyên tố Chẳng hạn: 23, 3137, 8389, 157163,… Các số nguyên tố dãy B gọi là số nguyên tố ghép Yêu cầu: Cho trước số nguyên K<=500, hãy tìm số nguyên tố ghép thứ K Input Output 3137 Bài 12: Dãy lớn nhất: Cho mảng số nguyên gồm n phần tử Tìm dãy gồm m phần tử (m<=n) cho dãy này có tổng lớn (Dãy là dãy các phần tử liên tiếp mảng) Yêu cầu: Dữ liều vào: gồm dòng - Dòng đầu tiên chứa số phần tử n mảng - Dòng chứa các phần tử dãy - Dòng thứ chứa số phần tử dãy Dữ liệu ra: gồm dòng chứa dãy có tổng lớn VD: Input Output 879 43528796 Bài 13: Xóa kí tự trùng Viết chương trình nhập vào xâu và xóa hết các kí tự liên tiếp giống xâu chừa lại Input Output cccccaaannnoo cano xxxxeeddaappp xedap yeseeeyysss yeseys Bài 14: Tổng số nguyên tố: Trong thư mà Christian Goldbach gửi cho Euler, ông đã đề cập đến đoán mình: Mọi số tự nhiên chẵn lớn là tổng số nguyên tố Hãy lập chương trình để kiểm chứng đoán Goldbach Yêu cầu: Dữ liệu vào từ file GB.INP gồm nhiều dòng, dòng đầu là số test (<10), các dòng dòng ghi số tự nhiên chắn lớn (<32000) Dữ liệu là file GB.OUT các dòng (mỗi dòng ứng với test) – dòng gồm hai số nguyên tố cách ít dấu cách có tổng số đã cho, không tìm thì ghi là “Khong” VD: GB.INT GB.OUT 35 12 57 33 Bài 15: Định lí 6174 Dãy 6174 tạo theo cách sau: Số hạng đầu tiên dãy là số nguyên dương n1 gồm chữ số (Bốn chữ số số hạng đầu tiên này không đồng thời nhau) Hai số (a1 và b1) tạo thành từ số hạng đầu tiên dãy Số thứ a1 có cách (4) xếp các số n1 theo thứ tự giảm dần và số thứ hai có cách xếp các chữ số n1 theo thứ tự tăng dần Số thứ hai n2 dãy là hiệu a1-b1 Tiếp tục, hai số a2 và b2 tạo thành từ n2 tương tự a1 và b1 và số thứ ba n3 dãy 6714 là hiệu a2b2, và tiếp tục Dãy số kết thúc các số hạng dãy bắt đầu lặp lại (ngĩa là các phần tử dãy đôi khác nhau) Chữ số đầu số (vị trí thứ tính từ bên trái) có nghĩa Định lí 6174 phát biểu số hạng cuối dãy số xây dựng trên luôn là số 6174 Chẳng hạn, xét dãy mà số hạng đầu tiên (n1) là 7815 Ta có : 8751 – 1578 = 7173 (n2) 7731 – 1377 = 6354 (n3) 6543 – 3456 = 3087 (n4) 8730 – 0378 = 8352 (n5) 8532 – 2358 = 6174 (n6) Yêu cầu : Cho trước số hạng đầu tiên dãy 6174 Cho biết số số hạng cuối (là số hạng 6174) dãy Dữ liệu vào : tập tin văn DL6174.INP, gồm dòng là số nguyên dương là số có chữ số là số hạng đầu tiên dãy 6174 Dữ liệu : Tập tin văn DL6174.OUT, gồm dòng số nguyên dương là số hiệu số hạng cuối dãy số 6174 mà số hạng đầu cho tập tin liệu VD : DL6174.INP DL6174.OUT 7815 Bài 16: Trò chơi vòng tròn Có m người xếp thành vòng tròn để tham gia trò chơi (M>=6) Trò chơi sau: Đầu tiên, người thứ đếm 1, người thứ đếm 2, người thứ đếm 3, người thứ tư lại đếm người đếm bị loại khỏi vòng trò Lập chương trình tính xem với m nhập vào từ bàn phím, thì người cuối cùng là người thứ bao nhiêu? TC.INT TC.OUT Bài 17: Phần tử yên ngựa Cho bảng A kích thước MxN Phần tử Aij gọi là phần tử yên ngựa nó là phần tử nhỏ hàng nó đồng thời là phần tử lớn cột nó Ví dụ bảng số sau đây: 15 55 76 thì phần tử A22 chính là phần tử yên ngựa Bạn hãy lập chương trình nhập từ bàn phím bảng số kích thước MxN và kiểm tra xem nó có phần tử yên ngựa hay không? Bài 18: -Biểu diễn phân số Một phân số luôn luôn có thể viết số thập phân hữu hạn vô hạn tuần hoàn Ví dụ: 23/5 = 4.6 3/8 = 0.375 1/3 = 0.(3) 45/56 = 0.803(571428) (5) Trong các ví dụ trên thì các chữ số đặt dấu ngoặc phần tuần hoàn số thập phân Nhiệm vụ bạn là viết chương trình nhập tử số (N) và nhập mẫu số (D), sau đó đưa kết là dạng thập phân phân số N/D Ví dụ chạy chương trình: Nhap N, D:1 1/7 = 0.(142857) Bài 19 - Số siêu nguyên tố (Dành cho học sinh THCS) Số siêu nguyên tố là số nguyên tố mà bỏ số tuỳ ý các chữ số bên phải nó thì phần còn lại tạo thành số nguyên tố Ví dụ 7331 là số siêu nguyên tố có chữ số vì 733, 73, là các số nguyên tố Nhiệm vụ bạn là viết chương trình nhập liệu vào là số nguyên N (0< N <10) và đưa kết là số siêu nguyên tố có N chữ số cùng số lượng chúng Ví dụ chạy chương trình: Nhap so N: 4 Cac so sieu nguyen to có chu so la: 2333 3739 3793 3797 5939 7193 2339 7331 2393 7333 2399 7393 2939 3119 3137 3733 Tat ca co 16 so Bài 20 - Tam giác số Hình sau mô tả tam giác số có số hàng N=5: 8 4 Đi từ đỉnh (số 7) đến đáy tam giác đường gấp khúc, bước từ số hàng trên xuống hai số đứng kề bên phải hay bên trái hàng dưới, và cộng các số trên đường lại ta tổng Ví dụ: đường có tổng là S=26, đường 7 có tổng là S=23 Trong hình trên, tổng Smax=30 theo đường là tổng lớn tất các tổng Nhiệm vụ bạn và viết chương trình nhận liệu vào là tam giác số chứa text file INPUT.TXT và đưa kết là giá trị tổng Smax trên màn hình File INPUT.TXT có dạng sau: Dòng thứ 1: có số N là số hàng tam giác số (0<N<100) N dòng tiếp theo, từ dòng thứ đến dòng thứ N+1: dòng thứ i có (i-1) số cách dấu trống (space) Ví dụ: với nội dung file INPUT.TXT là (6) 38 810 2744 45265 thì kết chạy chương trình là: Smax=30 Bài 21 - Đảo chữ cái Bạn phải viết chương trình đưa tất các từ có thể có phát sinh từ tập các chữ cái Ví dụ: Cho từ “abc”, chương trình bạn phải đưa các từ " abc", "acb", "bac", "bca", "cab" và "cba" (bằng cách khảo sát tất các trường hợp khác tổ hợp ba chữ cái đã cho) Input Dữ liệu vào cho tệp input.txt chứa số từ Dòng đầu tiên là số tự nhiên cho biết số từ cho Mỗi dòng chứa từ Trong đó, từ có thể chứa chữ cái thường hoa từ A đến Z Các chữ thường và hoa coi là khác Một chữ cái nào đó có thể xuất nhiều lần Output Với từ đã cho file Input.txt, kết nhận file Output.txt phải chứa tất các từ khác sinh từ các chữ cái từ đó Các từ sinh từ từ đã cho phải đưa theo thứ tự tăng dần bảng chữ cái Sample Input abc acba Sample Output abc acb bac bca cab cba aabc aacb abac abca acab acba baac baca bcaa caab (7) caba cbaa Bài 22 - Xoá số trên vòng tròn Các số từ đến 2000 xếp theo thứ tự tăng dần trên đường tròn theo chiều kim đồng hồ Bắt đầu từ số 1, chuyển động theo chiều kim đồng hồ, bước qua số lại xoá số Công việc đó tiếp diễn trên vòng tròn còn lại đúng số Lập chương trình tính và in số đó Bài 23 - Bài toán đổi màu bi Trên bàn có N1 hòn bi xanh, N2 hòn bi đỏ và N3 hòn bi vàng Luật chơi sau: Nếu hòn bi khác màu chạm thì chúng cùng biến thành màu thứ (ví dụ: xanh, vàng > đỏ, đỏ) Tìm thuật toán và lập chương trình cho biết có thể biến tất các hòn bi đó thành màu đỏ có không? Bài 24 - Thay từ Hai file INPUT1.TXT và INPUT2.TXT cho sau: File INPUT1.TXT chứa đoạn văn bất kì File INPUT2.TXT chứa không quá 50 dòng, dòng gồm hai từ: từ đầu là từ đích và từ sau là từ nguồn Hãy tìm file INPUT1.TXT tất các từ là từ đích và thay chúng các từ nguồn tương ứng Kết ghi vào file KQ.OUT (sẽ là đoạn văn tương tự file INPUT1.TXT đã thay từ đích từ nguồn) Sample INPUT File INPUT1.TXT chứa đoạn văn sau: Nam moi sap den roi, ban co zui khong? Chuc cac ban don mot cai Tet that vui ve va hanh phuc Chuc ban luon hoc gioi! File INPUT2.TXT chứa các dòng sau: ban em zui vui Sample OUTPUT File KQ.OUT chứa đoạn văn sau: Nam moi sap den roi, em co vui khong? Chuc cac em don mot cai Tet that vui ve va hanh phuc Chuc em luon hoc gioi! Bài 25 - Tổng các số tự nhiên liên tiếp Cho trước số tự nhiên n Lập thuật toán cho biết n có thể biểu diễn thành tổng hai nhiều số tự nhiên liên tiếp hay không? Trong trường hợp có, hãy thể tất các cách có thể có Bài 26 - Thực phép nhân (Dành cho học sinh THCS và THPT) Bạn hãy lập chương trình nhập số nguyên dương a và b Sau đó thực phép nhân (a x b) cách nhân tay thông thường Ví dụ: (8) Bài 27: Tổng và tích Cho số tự nhiên n>1 và n<18 với tổng S=1/2+2/3+3/4+…+(n-1)/n và tích P = 1/2 x 2/3 x 3/4 x…x (n-1)/n Yêu cầu: Viết chương trình nhập vào số tự nhiên n>1 và n<18 a Hiện màn hình tổng S và tích P với chữ số thập phân b Hiện màn hình tổng S và tích P dạng phân số Ví dụ: Nhập n=3 a S=1,1667 P=0,3333 b S=7/6 P=1/3 Bài 28: Máy đổi mãu tự lạ kì Có máy đổi mẫu tự kì lạ sau: Khi bỏ vào máy đúng mẫu tự a và đúng mẫu tự b thì máy cho mẫu tự c, Bỏ vào mẫu tự a và c thì máy cho mẫu tự b, bỏ vào mẫu tự c và b thì máy cho mẫu tự a Cho trước m mẫu tự a, n mẫu tự b, k mẫu tự c, hãy đổi nhiều mẫu tự c Yêu cầu: Viết chương trình nhập vào các số tự nhiên m, n, k là số mẫu tự a, b, c tương ứng Hiện màn hình số mẫu tự c nhiều có thể đổi Ví dụ: Nhập m=2, n=5, k=1 Số mẫu tự c đổi nhiều là Giải thích: - Lấy 1b và 1c bỏ vào máy 2a Khi đó ta có 4a, 4b, 0c - Thực lần bỏ vào máy lần 1a và 1b ta 8c Bài 29 : Chuỗi và khoảng trắng Cho chuỗi S có các chữ số 1, 2, và đúng khoảng trắng Người ta biến đổi chuỗi S cách lấy chữ số đổi khoảng trắng chữ số bị lấy thành khoảng trắng, tiếp tục đổi chuỗi s có dạng các chữ số đầu chuỗi, đến các chữ số 2, đến chữ số và khoảng trắng cuối chuỗi ta gọi là chuỗi đích Yêu cầu : Nhập vào chuỗi S gồm các chữ số 1, 2, và đúng khoảng trắng Hãy nêu các vị trí lấy chữ số đổi khaongr trắng với số lần lấy chữ ít để chuỗi đích Ví dụ : Nhập S=123123 (khoảng trắng vị trí thứ chuỗi S) Lần lượt các vị trí lấy chữ số đổi khoảng trắng là: Giải thích: Lần thứ lấy chữ số vị trí thứ đổi khoảng trắng, ta có S= 12 12331 Lần thứ hai lấy chữ số vị trí thứ đổi khoảng trắng, ta có S= 121 2331 Lần thứ ba lấy chữ số vị trí thứ đổi khoảng trắng, ta có S= 122331 Lần thứ tư lấy chữ số vị trí thứ đổi khoảng trắng, ta có S= 1112233 Bài 30: Ước số Cho số tự nhiên n (0<n<65535) Yêu cầu: Viết chương trình nhập vào số tự nhiên n từ bàn phím, và thực các yêu cầu sau: a Tính tổng các ước số n (không kể n) b Tìm số tự nhiên m (0<m<=n) cho tổng các ước số m (không kể m) là lớn nhất, in số tự nhiên m và tổng các ước số m màn hình (9) Bài 31: Xóa số chuỗi Khi viết liên tiếp các số tự nhiên từ đến n ta xâu S biểu diễn số tự nhiên Ví dụ: với n=15 ta S=’123456789101112131415’ Yêu cầu: a Tính tổng các chữ số dãy S tạo n theo quy cách trên, với n là số tự nhiên nhập từ bàn phím (0<n<120) b Nhập vào số nguyên k (0<k<độ dài xâu S), xóa khỏi xâu S đúng k chữ số để số thu là số nhỏ có thể Bài 32: Cân vật Cho n cân có khối lượng tương ứng là 1, 2, …, n và cân hai đĩa Cân thăng khối lượng vật cần cân với tổng khối lượng các cân Cho vật có khối lượng M (0<n<20 và 0<M<50) Hỏi có bao nhiêu cách cân khối lượng vật M bẳng n cân trên Input: file văn QUACAN.IN gồm dòng chứa số tự nhiên n, M Output: file văn QUACAN.OUT gồm dòng ghi số cách cân Ví dụ: QUACAN.IN QUACAN.OUT 10 Giải thích: Cách 1: Dùng cân 2, 3, Cách 2: Dùng cân 1, 4, Cách 3: Dùng cân 1, 2, 3, Bài 33: Hình xoắn ốc Viết chương trình xếp ma trận NxM theo hình xoắn ốc Kết hiển thị lên màn hình Ví dụ: Nhập n=3, m=3 Bài 34 TIỀN XU Bờm có nhiều đồng tiền xu, chúng có hai mệnh giá: A đồng B đồng Việc bảo quản tiền xu phiền phức, vì vậy, Bờm muốn tiêu hết chúng thật nhanh Cụ thể hơn, mua món hàng giá trị C đồng, Bờm muốn toán tiền xu và sử dụng cách dùng nhiều đồng xu Chẳng hạn, Nếu bờm có hai loại tiền xu mệnh giá đồng và đồng, phải toán lượng tiền 32 đồng, Bờm có hai cách trả: Cách thứ sử dụng xu mệnh giá đồng và xu mệnh giá đồng, cách còn lại sử dụng xu mệnh giá đồng và xu mệnh giá đồng Cách thức Bờm lựa chọn vì giúp bờm tiêu nhiều đồng xu Cho A, B, C, hãy xác định số lượng đồng xu nhiều có thể sử dụng đề toán chính xác số tiền C đồng không có cách toán sử dụng hai loại đồng xu mệnh giá A, B (10) Dữ liệu (COINS.INP) Dòng 1: ba số nguyên A, B, C (1 ≤ A, B ≤ 5000; ≤ C ≤ 106) Kết (COINS.OUT) Dòng 1: số nguyên là tổng số đồng xu nhiều có thể sử dụng để toán, số này -1 không có cách toán Ví dụ: COINS.INP 32 COINS.OUT 10 Bài 35 BẬC ĐỐI XỨNG Xâu đối xứng là xâu đọc từ trái qua phải giống đọc từ phải qua trái, chẳng hạn các xâu ‘abba’, ‘madam’ là các xâu đối xứng Người ta định nghĩa bậc đối xứng xâu S, kí hiệu deg(S), sau: Nếu S không phải là xâu đối xứng S có độ dài thì bậc đối xứng S (viết là: deg(S)=0) Nếu xâu S là xâu đối xứng có độ dài lớn 1, giả sử S=S 1S2…SN (N > 1), thì bậc đối xứng S tính theo công thức: deg(S)= 1+ deg(T), đó xâu T là nửa trái S theo nghĩa: T = S1S2…Sk với k = (N + 1) div Chẳng hạn: deg(‘x’) = vì ‘x’ có độ dài deg(‘x0’) = vì ‘x0’ không đối xứng deg(‘x0x’) = vì deg(‘xox’) = + deg(‘xo’) deg(‘xoxxox’) =2 vì deg(‘xoxxox’)=1+deg(‘xox’) Cho xâu S độ dài không vượt quá 200 gồm các chữ cái latin thường, hãy xác định bậc đối xứng S Dữ liệu (PALINDEG.INP) Dòng 1: xâu S Kết (PALINDEG.OUT) Dòng 1: số nguyên là bậc đối xứng xâu S Ví dụ PALINDEG.INP Bobobbobob PALINDEG.OUT Bài 36 DÃY CON Cho dãy N số nguyên A= (a1, a2, …, aN) và số nguyên dương M Hãy tìm cách xóa bỏ dãy A số phần tử cho dãy thu có nhiều phần tử đồng thời dãy này không có phần tử nào có tổng chia hết cho M Chẳng hạn, với N = 5, M = 3, A = (1, 2, 3, 4, 5), dãy dài thu có độ dài 3, có dãy vậy, đó là (1, 2, 3); (1, 3, 4); (2, 3, 5); (3, 4, 5) Dữ liệu (CONFLICT.INP) Dòng 1: hai số nguyên N, M (1 ≤ N ≤ 105; ≤ M ≤ 105) Dòng 2: N số nguyên a1, a2, …., aN (|ai| ≤ 109 ∀ i = N) (11) Kết (CONFLICT.OUT) Dòng 1: số nguyên K là số phần tử dãy thu Dòng 2: K số nguyên là số dãy ban đầu các phần tử dãy cont hu được, các số đưa theo trật tự tăng Nếu có nhiều cách xóa cho dãy độ dài K thỏa mãn yêu cầu bài toán thì cần đưa cách Ví dụ CONFLICT.INP 32 100 10 CONFLICT.OUT 12 (12)