# GÓC SÁNG TẠO > Khu vực lập trình > Pascal/Delphi/Kylix >  Tổng hợp các đề Pascal

## sangseo

*Các đề thi Pascal của những cuộc thi như Tin học trẻ, HSG Tình, Quốc Gia...và những đề Pascal hay sẽ được Post tại đây.

**Đề nghị các bạn không Spam. Khi cần thảo luận về một đề tài nào đó các bạn có thể tạo một Topic khác để thảo luận. 

**Những bạn nào vi phạm sẽ bị Del bài hoặc ban nick.*
​

----------


## HSCompany

*Đây là bài của bạn: "XUANHUY0110" đã gửi lên. 

DI CHUYỂN CÁC VIÊN BI* <div style="text-align: center">*(DCVB.PAS)*​</div> <div style="text-align: center">Giới hạn thời gian: 2 giây

​</div> Có n viên bi khác màu được phân chia vào 2 hộp. Trong mỗi bước đi, bạn chỉ có thể di chuyển một viên bi từ hộp này sang hộp khác. Bạn phải di chuyển các viên bi thỏa mãn điều kiện: tập hợp các viên bi trong hộp 1 ở mọi bước đi luôn là duy nhất (nghĩa là tập hợp viên bi trong hộp 1 ở bước đi đang xét phải khác tất cả các bước đi trước đó). Có tất cả 2n-1bước di chuyển như vậy.
Ví dụ: Trường hợp có 4 viên bi. Hộp 1 có các viên bi màu 1 và 3, hộp 2 có các viên bi màu 2 và 4. Khi đó giải pháp được thực hiện như sau:

<div style="text-align: center">*Các b**ước*​</div> <div style="text-align: center">*Hộp 1 (H1)*​</div> <div style="text-align: center">*Di chuyển*​</div> <div style="text-align: center">*Hộp 2 (H2)*​</div> 1
1,3

2,4
2
1,2,3
Di chuyển 2 từ H2 sang H1
4
3
1,2,3,4
Di chuyển 4 từ H2 sang H1

4
1,2,4
Di chuyển 3 từ H1 sang H2
3
5
2,4
Di chuyển 1 từ H1 sang H2
1,3
6
2,3,4
Di chuyển 3 từ H2 sang H1
1
7
3,4
Di chuyển 2 từ H1 sang H2
1,2
8
4
Di chuyển 3 từ H1 sang H2
1,2,3
9

Di chuyển 4 từ H1 sang H2
1,2,3,4
10
3
Di chuyển 3 từ H2 sang H1
1,2,4
11
2,3
Di chuyển 2 từ H2 sang H1
1,4
12
2
Di chuyển 3 từ H1 sang H2
1,3,4
13
1,2
Di chuyển 1 từ H2 sang H1
3,4
14
1
Di chuyển 2 từ H1 sang H2
2,3,4
15
1,4
Di chuyển 4 từ H2 sang H1
2,3
16
1,3,4
Di chuyển 3 từ H2 sang H1
2

*Input:* Gồm nhiều bộ test. 
Dòng đầu tiên chứa T(1≤T≤20) là số bộ test. 
Mỗi Test bao gồm 2 dòng:

Dòng đầu tiên chứa n(1≤n≤10) và h1(0≤h1≤n). n là số viên bi và h1 là số viên bi trong hộp 1. Dòng tiếp theo chứa h1 các chỉ số màu của viên bi trong hộp 1. Tất cả các số này khác nhau và nằm trong khoảng 1 đến n. Phần còn lại gồm n-h1 viên bi ở trong hộp 2.*Output*
Mỗi bộ test gồm 2n dòng.

2n-1 dòng đầu tiên chứa các bước đi. Dòng cuối cùng bỏ trống. 
 
2
2 1
1
4 2
1 3

Di chuyen 2 tu H2 sang H1
Di chuyen 1 tu H1 sang H2
Di chuyen 2 tu H1 sang H2

Di chuyen 2 tu H2 sang H1
Di chuyen 4 tu H2 sang H1
Di chuyen 3 tu H1 sang H2
Di chuyen 1 tu H1 sang H2
Di chuyen 3 tu H2 sang H1
Di chuyen 2 tu H1 sang H2
Di chuyen 3 tu H1 sang H2
Di chuyen 4 tu H1 sang H2
Di chuyen 3 tu H2 sang H1
Di chuyen 2 tu H2 sang H1
Di chuyen 3 tu H1 sang H2
Di chuyen 1 tu H2 sang H1
Di chuyen 2 tu H1 sang H2
Di chuyen 4 tu H2 sang H1
Di chuyen 3 tu H2 sang H1

----------


## banthe247

Hic, hôm nay tui - một học sinh lớp 9, thi tin học không chuyên về, có cái đề gần như quá tầm, mong được giải đáp (đề phát vào 26/4/2009; tại Thành phố Rạch Giá-Tỉnh Kiên Giang):
*1./* Viết chương trình nhập vào 1 số tư nhiên n (1<=n<=1000). Cho biét có bao nhiêu số chia hết cho 3 và tính tổng các số đó 
Dữ liệu vào: được cho trong tập tin văn bản CHIAHET.INP gồm 1 dòng duy nhất ghi giá trị n
Dữ liệu ra: ghi vào tập tin văn bản CHIAHET.OUT gồm 2 dòng:
- Cho biết có bao nhiêu số chia hết cho 3.
- Tổng các số đó.
2./ Một dãy số a1,a2,a3,...an được gọi là dãy tăng dần nếu: a1<=a2<=a3...<=an
Cho 1 dãy gồm tối đa n số (1<=n<=100). Viết chương trình tìm chiều dài dãy con liên tiếp tăng dần dài nhất trong dãy nói trên.
Dữ liệu vào: được cho trong tập tin văn bản DAYSO.INP gồm n+1 dòng:
- 1: ghi giá trị n.
- n dòng tiếp theo là n số nguyên dương.
Dữ liệu ra: ghi vào tập tin văn bản DAYSO.OUT gồm một số duy nhất là độ dài của dãy con liên tiếp dài nhất vừa tìm được. (bài này làm được luôn)
3./ Một chuỗi gọi là đối xứng nếu nó không có ít hơn 1 ký tự và nếu đọc từ trái sang hay từ phải sang đều như nhau.
Viết chương trình nhập vào chuỗi ký tự cho trước S co chiều dài n (1<=n<=1000) và cho biết chiều dài chuỗi con đối xứng dài nhất trong chuỗi S. Chuỗi con của S là chuỗi gồm một số ký tự liên tiếp nhau trong S có độ dài nhỏ hơn hoặc bằng n.
Dữ liệu vào: được cho trong tập tin văn bản CHUOISO.INP gồm 2 dòng;
- Giá trị n.
- N ký tự liễn tiếp gồm các chữ cái in hoa.
Dữ liệu ra: ghi vào tập tin văn bản CHUOISO.OUT gồm một số duy nhất là độ dài chuỗi con đối xứng dài nhất vừa tìm được.( bài này chịu).
< Đã chưa học phần file mà còn ra đề toàn file, tức không? Năm nay tự dưng ra cái đề khác quá trời, tui rớt chắc rồi nhưng vẫn muốn được sự giải đáp :realmad:>

----------


## thangpham18

*Chọn vận động viên.*

*Đề thi bảng A (HSG Khánh Hòa 2008-2009)
* Kết quả thi đấu quốc gia của N vận động viên (đánh số từ 1 đến N) trên M môn (đánh số từ 1 đến M) được đánh giá bằng điểm là những giá trị không âm từ 0 đến 100. Với mỗi vẫn động viên, sẽ biết điểm đánh giá trên từng môn của vận động viên đó.
​*Yêu cầu:* Cần chọn ra k vận động viên và k môn để thành lập đội tuyển thi đấu Olympic quốc tế, trong đó mỗi vận động viên chỉ được thi đấu đúng một môn (1<=k<=M, N), sao cho tổng số điểm của các vận động viên trên các môn đã chọn là lớn nhất.
​*Dữ liệu vào:* Các điểm số của các vận động viên được ghi trong tập tin văn bản THIDAU.INP có cấu trúc như sau:
​<ul>
<li>Dòng đầu ghi số vận động viên N và số môn M (1<=M, N<=20);Các dòng tiếp theo, mỗi dòng ghi các điểm đánh giá trên tất cả M môn của một vận động viên theo thứ tự môn thi 1, 2, ..., M. Các dòng này được ghi theo thứ tự vận động viên 1, 2, ..., N.Các số ghi trên một dòng cách nhau ít nhất một dấu cách.</li>
</ul>*Dữ liệu ra:* Mỗi lần nhận một giá trị k nguyên dương từ bàn phím, chương trình xuất ra tập tin THIDAU.OUT và màn hình theo dạng sau:
​Kết quả tuyển chọn dưới dạng k cặp (i, j) với nghĩa vận động viên i được chọn thi đấu môn j và tổng số điểm tương ứng với các môn đã chọn. Chương trình kết thúc khi nhận được giá trị k = 0. Các số ghi trên một dòng của tập tin THIDAU.OUT cách nhau ít nhất một dấu cách.
​*Ví dụ:*....THIDAU.INP......................THIDAU.OUT
​ ....................3 3..................................1 (2,2) 7
....................1 5 0................................2 (2,1) (3,2) 11
....................5 7 4................................3 (1,2) (2,1) (3,3) 13
....................3 6 3
 Và tương ứng trên màn hình là:
​ k = 1 => (2,2) tong so diem bang 7;
​ k = 2 => (2,1) (3,2) tong so diem bang 11;
​ k = 3 => (1,2) (2,1) (3,3) tong so diem bang 13;
​ 

 
​

----------


## kevinvu1987

Thấy bài này ngồ ngộ, post lên cho anh em xem thử:shifty:
_ Có N vị khách đến nhà hàng, vị khách thứ i đến vào thời điểm t và dự định tiêu hết Pi đồng. Cửa nhà hàng có k+1 trạng thái, mỗi trạng thái được thể hiện bằng một số nguyên trong khoảng 0..k, trạng thái s có nghĩa là các bóng đèn trang trí ở cửa nhà hàng có màu s. Sau mỗi đơn vị thời gian, trạng thái s của cửa nhà hàng có thể thay đổi bằng trạng thái trước s là s-1 (nếu s>0) hoặc có thể được thay đổi bằng trạng thái sau s là s+1 (nếu s<k) hoặc có thể giữa nguyên trạng thái s. Vị khách thứ i sẽ vào nhà hàng nếu tại thời điểm anh ta đến, màu bóng đèn trang trí tại cửa nhà hàng là màu Ci (màu anh ta thích), nếu không anh ta sẽ bỏ đi và không trở lại._
_ Cửa hàng bắt đầu mở cửa tại thời điểm 0 và có trạng thái 0. Tính xem nhà hàng thu được tối đa bao nhiêu tiền._
_res.inp:_
_- Dòng đầu là 2 số nguyên N và k (1<= N <= 1000, 1<= k <=100)._
_- N dòng sau, mỗi dòng 3 số nguyên Ti,Pi,Ci (0=<Ti,Pi<=10^6, 0<=Ci<=k)_
_res.out:_
_ 1 dòng duy nhất chứa số tiền lớn nhất có thể thu được._
Post thử xem, các bạn nghĩ bài này khó không#-o. Chúc vui vẻ!:book:

----------


## canhothegoldview

bài này QHĐ tựa tựa giống mí bài xếp lịch í

----------


## doremon29

> Hic, hôm nay tui - một học sinh lớp 9, thi tin học không chuyên về, có cái đề gần như quá tầm, mong được giải đáp (đề phát vào 26/4/2009; tại Thành phố Rạch Giá-Tỉnh Kiên Giang):
> *1./* Viết chương trình nhập vào 1 số tư nhiên n (1<=n<=1000). Cho biét có bao nhiêu số chia hết cho 3 và tính tổng các số đó 
> Dữ liệu vào: được cho trong tập tin văn bản CHIAHET.INP gồm 1 dòng duy nhất ghi giá trị n
> Dữ liệu ra: ghi vào tập tin văn bản CHIAHET.OUT gồm 2 dòng:
> - Cho biết có bao nhiêu số chia hết cho 3.
> - Tổng các số đó.
> 2./ Một dãy số a1,a2,a3,...an được gọi là dãy tăng dần nếu: a1<=a2<=a3...<=an
> Cho 1 dãy gồm tối đa n số (1<=n<=100). Viết chương trình tìm chiều dài dãy con liên tiếp tăng dần dài nhất trong dãy nói trên.
> Dữ liệu vào: được cho trong tập tin văn bản DAYSO.INP gồm n+1 dòng:
> ...


Bài 3:
_ Duyệt từ đầu tới cuối xâu, với mỗi phần tử của xâu ta sẽ có 1 xâu đối xứng và có 2 trường hợp để mở rộng xâu đối xứng từ phần tử đó:
+) Xâu đối xứng tìm được nhờ phần tử đó sẽ có vị trí chính giữa là phần tử đó (xâu đối xứng độ dài lẻ).
+) Xâu đối xứng tìm được nhờ phần tử đó sẽ có 2 vị trí ở giữa là phần tử đó và phần tử cạnh nó trong xâu ban đầu (xâu đối xứng độ dài chẵn).
Nếu xâu đối xứng có độ dài là lẻ thì loang dần 2 ptu đầu cuối xâu đối xứng ra 2 bên (ban đầu chúng có giá trị là vị trí của ptu ta đang duyệt tới), nếu xâu đối xứng có độ dài chẵn thì cũng loang như vậy thôi nhưng ptu cuối ban đầu sẽ là vị trí của ptu đang duyệt +1 còn vị trí ptu đầu thì là vị trí của ptu ta đang duyệt. 
Sau khi tìm xong vị trí đầu, cuối thì tức là ta tìm được độ dài của xâu đối xứng có chứa phần tử ta đang xét, so sánh những độ dài đó để tìm ra cái lớn nhất, in ra nếu thích.
Hi`, cái hồi lớp 9 tôi cũng thi tin học trẻ ko chuyên, nhưng chỉ dc giải ba vì test của đề bài ra hóc hơn , yêu cầu xử lí với số cực lớn (tầm vài trăm chữ số), hơn nữa lại còn yêu cầu tốc độ chương trình.

----------


## tunght

Mọi người cần đề thi hả? Có liền.
Đề thi 8 tuần học kì I: khó ra phết:
"Một cuộc đua thuyền sắp được tổ chức tại Nha Trang, ban tổ chức quyết định năm nay đưa ra 1 yêu cầu mới đòi hỏi các vận động viên thể hiên trí thông minh. Cuộc đua diễn ra trên 1 đường thẳng (trên biển), trên đó có đặt 1 số biển báo. Để thắng cuộc, thuyền của bạn phải qua hết các biển báo và khoảng cách đi là nhỏ nhất.
Khoảng cách đi được tính là tổng khoảng cách của các biển báo. Khoảng cách của biển báo 1 là khoảng cách từ điểm xuất phát đến biển báo, các biển báo khác có khoảng cách là tổng của khoảng cách từ biển báo liền trước đó đến biển báo hiện tại, cộng với khoảng cách đi(nghỉ) của biển báo liền trước đó.
Để giúp bạn hiểu luật , ban tổ chức lấy biển báo 0 là điểm xuất phát và các biển báo ở bên phải biển 0 là các biển có số hiệu nguyên dương thể hiện khoảng cách từ biển báo đó tới biển báo 0, tương tự như vậy với bên kia cho các biển báo có kí hiệu nguyên âm. Vì vậy nếu đặt các biển báo tại -3,1,5 và đi theo hành trình -3,1,5 thì tổng độ dài đường đi của vận đông viên là 3+(4+3)+(4+7)=21
Viết chương trình tính khoảng cách nhỏ nhất để đi hết các biển báo theo đúng luật chơi.
Inp: RACE.INP
Dòng đầu ghi số nguyên dương n là số biển báo
Dòng tiếp chứa n số nguyên ngăn cách nhau bởi ít nhất 1 dấu cách là nơi đặt biển báo.
OUT: RACE.OUT
Chứa 1 số nguyên ko âm là đáp số.
VD:
Inp
8
-9 -6 -5 -2 -1 3 4 10
OUT :98
Giới hạn : 1<=n<=200,các biển báo có trị tuyệt đối <=700.
Mà theo mình là cái topic này lập ra nên để mọi người thảo luận về cả hướng giải nữa chứ. Nếu chỉ là sưu tầm đề thì thật là chán ngắt.

----------


## LinhNguyen

*Bài 1: Xâu đối xứng*

Xâu đối xứng là xâu đọc giống nhau nếu ta bắt đầu đọc từ trái qua phải hoặc từ phải qua trái. Ví dụ, xâu RADAR là xâu đối xứng, xâu TOMATO không phải là xâu đối xứng.
​ *Yêu cầu:* Cho một xâu S gồm không quá 200 kí tự. Cho biết S có phải là xâu đối xứng hay không? Nếu không, cho biết số kí tự ít nhất cần thêm vào S để S trở thành xâu đối xứng.
​ *Dữ liệu:* Vào từ file văn bản BAI3.INP, gồm duy nhất 1 dòng ghi xâu S.
​ *Kết quả:* Ghi ra file văn bản BAI3.OUT, duy nhất số k là số kí tự ít nhất cần thêm vào S để S trở thành xâu đối xứng. Nếu xâu S đã cho là đối xứng thì ghi k = 0.
​ *Bài 2: Biểu thức Zero*

Cuội viết liên tiếp các số tự nhiên từ 1 đến N thành dãy: 1 2 3 ... N. Cuội đố Bờm điền các dấu phép toán + hoặc - vào giữa 2 số tự nhiên liên tiếp sao cho biểu thức thu được có kết quả bằng 0.
​ *Yêu cầu:* Bạn hãy giúp Bờm viết chương trình liệt kê tất cả các cách điền dấu phép toán thích hợp.
​ *Dữ liệu:* Vào từ file văn bản BAI4.INP gồm 1 dòng duy nhất ghi số N. N<10
​ *Kết quả:* Ghi ra file văn bản có tên BAI4.OUT:
​ <div style="padding-left: 30px">· Dòng đầu tiên ghi số M là số cách điền dấu vào biểu thức.
​</div> <div style="padding-left: 30px">· M dòng tiếp theo, mỗi dòng ghi một kết quả tìm được.
​</div> *Bài 3:Miền 0*

Cho một hình chữ nhật gồm M hàng, N cột, được chia thành MxN ô vuông. Mỗi ô vuông được ghi một trong hai số nguyên 0 hoặc 1. 
Miền 0 là một miền liên tục các số 0 thuộc các ô chung cạnh với nhau. Diện tích miền là số lượng các ô vuông cùng giá trị thuộc miền đó.
*Yêu cầu:* Tính diện tích miền 0 lớn nhất của hình chữ nhật đã cho.
*Dữ liệu:* Vào từ file văn bản BAI5.INP:
 · Dòng đầu tiên ghi hai số M, N.
 · M dòng tiếp theo, mỗi dòng ghi N số lần lượt là giá trị các ô trong bảng số.
*Kết quả:* Ghi ra file văn bản BAI5.OUT số nguyên duy nhất là diện tích miền 0 lớn nhất.
*Giới hạn:* 1 < M, N < 100.
​ *Bài 4 - Dãy con lồi* 

Dãy giá trị nguyên A=(A1, A2, …, AN) được gọi là lồi, nếu nó giảm dần từ A1 đến một Ai nào đó, rồi tăng dần tới AN. 
Ví dụ dãy lồi: 10 5 4 2 −1 4 6 8 12 
Yêu cầu: Lập trình nhập vào một dãy số nguyên, bằng cách xóa bớt một số phần tử của dãy và giữ nguyên trình tự các phần tử còn lại, ta nhận được dãy con lồi dài nhất. 
Dữ liệu: Dayloi.inp có dạng 
- Dòng đầu là N (N≤2000) 
- Dòng tiếp theo là N số nguyên của dãy số (các số kiểu integer) 
Kết quả: Dayloi.out gồm: 
- Dòng đầu tiên ghi số phần tử lớn nhất của dãy con tìm được 
- Dòng tiếp theo ghi các số thuộc dãy con (không thay đổi trật tự các phần tử trong dãy ban đầu) 
​ Ví dụ 


*Bài 5 - Dây chuyền thông báo* 

Các học sinh trong một lớp học quyết định lập một dây chuyền thông báo như sau. Mỗi học sinh chọn một học sinh duy nhất khác làm người kế tiếp để truyền trực tiếp thông báo. Khi mỗi học sinh nhận được thông báo, anh ta sẽ truyền ngay cho người kế tiếp của mình. 
Dây chuyền thông báo được gọi là tốt nếu nó thoả mãn điều kiện: Khi một học sinh A1 bất kỳ gửi thông báo cho người kế tiếp A2, A2 lại gửi cho người kế tiếp A3,..., cứ như vậy thì cuối cùng thông báo sẽ đến mọi người trong lớp kể cả người ban đầu (A1) đã phát ra thông báo. Không nhất thiết mọi dây chuyền thông báo là tốt. 
Bài toán đặt ra là: Cho trước một dây chuyền thông báo, hãy tìm số ít nhất việc thay đổi người kế tiếp để có thể nhận được một dây chuyền thông báo tốt. *Dữ liệu:* file văn bản THONGBAO.INP trong đó dòng thứ nhất ghi số N < 10000 là số hcjc sinh trong lớp, các họcc sinh này có tên từ 1 đến N. Trong dòng tiếp theo ghi N số, số thứ i là tên người kế tiếp của học sinh i. 

*Kết quả:* file THONGBAO.OUT như sau: dòng thứ nhất ghi số K là số thay đổi cần tiến hành (nếu dây chuyền thông báo đã cho là tốt thì K=0). Nếu K>0, trong K dòng tiếp theo, mỗi dòng ghi hai tên học sinh, người sau là người kế tiếp mới được thay đổi của người trước. 
​ *Bài 6 - Bày tranh* 

Cho n bức tranh mã số từ 1..n (n≤50). Người ta cần chọn ra một bức để đặt ở cửa phòng tranh, số còn lại được treo thẳng hàng trong phòng trên m vị trí định sẵn có mã số 1..m từ trái qua phải. Các bức tranh phải được treo theo trật tự nghiêm ngặt sau đây: tranh có số hiệu nhỏ phải treo ở trên tranh có số hiệu lớn. 
Biết các thông tin sau về mỗi bức tranh: 
- Tranh thứ i treo tại cửa sẽ đạt trị thẩm mỹ c_;_ 
- Tranh thứ i treo tại vị trí j sẽ đạt trị thẩm mỹ v[i,j]. 
- m+1≥n. 
- Các giá trị thẩm mỹ là những số tự nhiên không vượt quá 50. 
Yêu cầu: Hãy xác định một phương án treo tranh để có tổng trị thẩm mỹ là lớn nhất. 
*Dữ liệu:* Picture.INP 
- Dòng thứ nhất ghi n, m (cách nhau 1 dấu cách) 
- Dòng tiếp theo là n giá trị c. 
- Tiếp đến là n dòng, dòng i gồm m vị trí v[i,1], v[i,2],..v[i,m]. 
*Kết quả:* Picture.OUT
- Dòng thứ nhất ghi giá trị thẩm mỹ lớn nhất tìm được 
- Dòng thứ hai: ghi mã số hiệu bức tranh treo ở cửa phòng tranh. 
- Dòng thứ 3 ghi n-1 số tự nhiên sắp tăng chặt cho biết mã số các vị trí được chọn để treo tranh 
_Ví dụ:_ 
​ *Bài 7: Xâu gọn* 

_Xâu gọn S là xâu có tối đa 250 kí tự gồm các chữ cái A..Z, a..z và các số nguyên dương (không lớn hơn 50). Các số nguyên dương cho biết số lần xuất hiện của dãy kí tự trong khai triển (đầy đủ) của S, nếu kí tự xuất hiện một lần thì có thể không viết số lần xuất hiện._
_Ví dụ: Xâu gọn_ 
_S : ”A2B(C2A)2D3” có dạng khai triển là “AABCCACCADDD” (có chiều dài là 12)._ 
_Yêu cầu: Cho N xâu gọn. Tính chiều dài của mỗi xâu ở dạng khai triển._
_Dữ liệu vào: Tệp văn bản XAUGON.INP gồm:_
_· Dòng 1: Ghi số N (1£N£100) số lượng xâu gọn._
_· N dòng tiếp theo mỗi dòng ghi 1 xâu gọn._
_Dữ liệu ra: Tệp văn bản XAUGON.OUT ghi N dòng, mỗi dòng là chiều dài của xâu ở dạng khai triển tương ứng, nếu gặp xâu gọn sai cú pháp thì ghi số 0._

​  *Bài 8. Dàn đèn* 
_
_Cho một bảng kích thước mxn được chia thành lưới ô vuông đơn vị, tại mỗi ô của bảng có một trong các ký tự:
 · ".": Ô trống.
 · "+": Ô có chứa một đèn chưa bật sáng.
 · "*": Ô có chứa một đèn đã bật sáng.
 Hai đèn đã bật sáng bất kỳ không nằm cùng hàng hoặc cùng cột.
 Yêu cầu: Hãy bật sáng thêm một số nhiều nhất các đèn sao cho: Số đèn sáng trên mỗi hàng cũng như trên mỗi cột của bảng tối đa là 1.
*Dữ liệu vào:* Tệp văn bản *DANDEN.INP* 
 · Dòng 1: Ghi hai số m, n (1 £ m, n £ 200) cách nhau một ký tự trắng
 · m dòng tiếp theo, dòng thứ i ghi n ký tự liên tiếp, ký tự thứ j là ký hiệu ô (i, j) của bảng_ 
Dữ liệu ra: Tệp văn bản DANDEN.OUT_ _
 · Dòng 1: Ghi số đèn có thể bật thêm
 · m dòng tiếp theo, dòng thứ i ghi n ký tự liên tiếp, ký tự thứ j là ký hiệu ô (i, j) của bảng sau khi đã bật sáng thêm các đèn.
_​_
_

----------


## haibang510

mình tìm thấy một bài cũng khá hay.các bạn thử xem nha:
*:**DIVIDING SEQUENCES*

Dãy con của một dãy là một dãy thu được bởi xoá bỏ các phần tử nào đó của dãy đã cho. Ví dụ, _3, 7, 11, 3 là một dãy con của dãy 6, 3, 11, 5, 7, 4, 3, 11, 5, 3_,_ nhưng 3, 3, 7 không phải là một dãy con của dãy 6, 3, 11, 5, 7, 4, 3, 11, 5, 3_.
Một dãy a1, a2, .., aN được gọi là chia hết hoàn toàn nếu với mọi 1 ≤ i < j ≤ N thì aj chia hết ai. Ví dụ, _3, 15, 60, 720 là một dãy chia hết hoàn toàn._
_Yêu cầu: Cho một dãy các số nguyên, tìm dãy con chia hết hoàn toàn có độ dài lớn nhất trong dãy này._
_Ví dụ: Xét dãy 2, 3, 7, 8, 14, 39, 145, 76, 320, nó có một dãy con chia hết hoàn toàn có độ dài 3 là 2, 8, 320 nhưng không có dãy con nào có độ dài lớn hơn 3 mà chia hết hoàn toàn._
_Xét dãy 2, 11, 16, 12, 36, 60, 71, 17, 29, 144, 288, 129, 432, 993_ nó chỉ có 2 dãy con chia hết hoàn toàn độ dài lớn nhất bằng 5 (dãy chứa các số đậm nét) như sau:
· *2*_, 11, 16, 12, 36, 60, 71, 17, 29, 144, 288, 129, 432, 993_ 
· *2*_, 11, 16, 12, 36, 60, 71, 17, 29, 144, 288, 129, 432, 993_ 
*Dữ liệu vào:* Đọc từ file text có tên *Ds.inp* có cấu trúc : 
Dòng đầu chứa một số nguyên dương N là độ dài của dãy (_N ≤ 10000)_. 
Dòng 2…N+1, mỗi dòng chứa một số nguyên. Số nguyên trên dòng i+1 là ai. (|ai| ≤ 50000).
*Dữ liệu ra:* Kết quả ghi vào file text có tên *Ds.out* chứa độ dài lớn nhất của dãy con chia hết hoàn toàn tìm được. 
*Ví dụ :*

*Ds.inp*​
*Ds.Out*​9
2 
3 
7 
8 
14 
39 
145 
76 
320
kq:3

----------


## kaysone2911

*đề thi tỉnh Hải Dương*

mình mới thi đợt học sinh giỏi tỉnh nhưng do k đọc kĩ đề mình đã sai 2 bài không khó lắm.cững khá tiếc.mình muốn post lên cho các bạn xem.cũng có một số bài cũng đã có trong diễn đàn rồi.
*Bài 1:*Cặp số hữu nghị (2 điểm)
Hai số nguyên dương được gọi là “ hữu nghị” nếu số này bằng tổng các ước số thực sự của số kia và ngược lại (ước thực sự của một số nguyên dương là ước nhỏ hơn ước số đó, ví dụ 6 có ước thực sự là 1,2,3).Hãy tìm các cặp số hữu nghị từ 100 tới 1000.
Kết quả: đưa ra màn hình, mỗi cặp số tìm được ghi trên một dòng, số bé hơn viết trước, các số cách nhau tối thiểu mộ dấu cách.
*Bài 2:* Xóa chữ số (2 điểm)
Tìm tất cả các số có 4 chữ số thỏa mãn tính chất : Nếu xóa đi 1 chữ số nào đó thì số đó sẽ giảm đi 9 lần.
Kết quả: Đua ra màn hình, gồm nhiều dòng, mỗi dòng gồm 2 số; số thứ 1 là số có 4 chữ số thỏa mãn tính chất trên, số thứ 2 là số có 3 chữ số có được từ số trên, các số cách tối thiểu 1 dấu cách. Các dòng ghi kết quả không trùng nhau.
Dòng cuối cùng ghi số các số tìm được.
*Bài 3:* Xoáy ốc (2 điểm)
Lập chương trình nhập dãy các số tự nhiên liên tiếp tưg 1 tới n2 vào bảng A[NxN] theo chiều xoáy ốc ngược chiều kim đồng hồ
Ví dụ nhập N=4 kết quả thu được là:
1 12 11 10
2 13 16 9
3 14 15 8
4 5 6 7
Dữ liệu nhập từ bàn phím số nguyên dương n<=20
Kết quả : Đưa ra màn hình bảng A[NxN] gồm các số tự nhiên sắp xếp theo yêu cầu trên.
*Bài 4:* Số Amstrong (2.5 điểm)
Số tự nhiên có k chữ số, được gọi là amstrong nếu N bằng tổng các lũy thừa bậc k của các chữ số của nó.
Ví dụ 153= 13+53+33
Hãy tìm tất cả các số amstrong có k chữ số với 3<=k<=6;
Kết quả: Đưa ra màn hình, mỗi số được tìm viết trên một dòng.
Dòng cuối cùng ghi số các số tìm được.
*Bài 5* Số độc đắc (1.5 điểm)
Viết các số tự nhiên từ 1 tới 2009 theo một vòng tròn cùng chiều quay kim đồng hồ.
Cũng theo chiều đó, bắt đầu từ số 1, cư đếm từ 1 đến 612 thì xóa số đó đi.Lại bắt đầu từ số còn lại đứng sau số vùa bị xóa,lặp lại quá trình đến khi còn 1 số thì dừng lại.
a) Hỏi số còn lại là số nào?
b) B)Muốn số còn lại là số thứ L( 0<L<2010);
Dữ liệu vào nhập từ bàn phím số L;
Kết quả Đưa ra màn hình theo quy cách: dong thứ nhất là kết quả cho câu a, dòng thứ hai là kết quả câu b

----------


## nguyentruong17

* ĐỀ THI TIN HỌC TRẺ TOÀN QUỐC - BẢNG B - NĂM 2009*
*I> Hệ thống đèn màu trang trí cho hội thi*
*Gồm n đèn, mỗi đèn có thể bật được 2 màu xanh và đỏ. Lúc đầu tất cả các đèn được bật màu xanh. Sau mỗi chương trình tổ chức, một số đèn đã được đổi (nếu xanh => đỏ, đỏ => xanh), chương trình thứ i, các đèn có số thứ tự chia hết cho i+1 sẽ được đổi màu. Sau chương trình thứ k thì có bao nhiêu đèn màu đỏ*
*II> CHo 3 số nguyên dương a,b,m và n là đoạn thẳng thứ i có độ dài b nếu i=1, có độ dài (a*d[i-1]+B) mod m+1 nếu i>1. CHo biết có bao nhiêu tam giác khác nhau được tạo thành bằng cách chọn từ tập cạnh trên 3 đoạn thẳng làm 3 cạnh tam giác bằng nhau nếu có 3 cặp cạnh tương ứng bằng nhau.*

----------


## zin9xpro

*HỘI THI TIN HỌC TRẺ TỈNH BẮC NINH*
*Lần thứ VII - 2010*
ĐỀ CHÍNH THỨC
​*PHẦN THI THỰC HÀNH TRÊN MÁY TÍNH*

*BẢNG C - THPT*

Thời gian làm bài 120 phút, không kể thời gian phát đề
​​*Tổng quan về đề thi*
*Đề thi gồm 03 bài trong 02 trang*


*Bài 1: (3,0 điểm) File chương trình TRAIHE.PAS*
Một tệp văn bản tên TRAIHE.DAT thể hiện sơ đồ bố trí 
các lều của một trại hè do các chi đoàn dựng trại 
nhân dịp chào mừng ngày 26 - 3. 
Mỗi lều có hình tam giác cân đỉnh hướng lên phía trên, 
các dòng có lần lượt 1, 3, 5...dấu '*'. 
Các lều không dính nhau.
Ví dụ:



```
    
     *                    *
    ***                 ***
  *****
*******               *
                         ***
                        *****

```

Có 3 lều

*Yêu cầu:* Hãy đếm số lều có trong bản đồ và lưu vào tệp 
*TRAIHE.OUT*
File văn bản *TRAIHE.DAT* có số dòng không hạn chế, 
chiều dài tối đa của mỗi dòng không quá 128 kí tự.


*Bài 2: (3,0 điểm) File chương trình PTICH.PAS*

Cho số nguyên dương N. Hãy cho biết có thể phân tích
N thành tổng các số tự nhiên liên tiếp hay không? 
Nếu có hãy phân tích N thành tổng của các số 
tự nhiên liên tiếp với nhiều số hạng nhất có thể được.
*Dữ liệu vào:* cho trong File *PTICH.INP* gồm một số dòng,
mỗi dòng ghi một số nguyên dương N (N109)
*Kết quả:* ghi ra file *PTICH.OUT* theo cấu trúc sau:
+ Nếu N phân tích được thành tổng các số tự nhiên 
liên tiếp thì ghi chữ d sau đó là các số hạng trong 
cách phân tích đó, các số hạng ghi cách nhau một dấu cách,
mỗi dòng ghi không quá 25 số.
+ Nếu N không phân tích được thì chỉ ghi chữ k.
*Ví dụ:*

*PTICH.INP*
*PTICH.OUT*
12
8
d: 3 4 5
k



​Trang: 1/2

*Bài 3: (4,0 điểm)* *File chương trình ROBOT.PAS*

Một ROBOT di chuyển trên một nền phẳng của
một siêu thị được chia thành lưới toạ độ nguyên ABCD như hình

Gốc toạ độ đặt tại điểm A(0;0). 
ROBOT sẽ xuất phát từ điểm R(xo;yo), 
mặt hướng về phía cạnh BC và phải đi theo một chương trình định sẵn.
Chương trình lập sẵn cho ROBOT là một xâu kí tự 
bao gồm dãy các lệnh có dạng Cm, được gọi là lệnh đơn,
hoặc (U)m trong đó C là một trong các chữ cái Q, q, D
hoặc d, m là một số tự nhiên, U là một lệnh phức 
được tạo ra từ một dãy lệnh đơn hoặc lệnh phức. 
Các lệnh đơn có ý nghĩa như sau:
*+ Dm:* Là tiến về phía trước m ô, mỗi bước là 
một lần di chuyển từ một điểm đến một điểm
kế tiếp theo hướng đang nhìn của ROBOT.
*+ dm:* Lùi lại về phía sau m bước
*+ Qm:* ROBOT sẽ quay người m lần, 
mỗi lần qua một góc 450 theo chiều kim đồng hồ.
*+ qm:* ROBOT quay người m lần, 
mỗi lần 1 góc 450 ngược chiểu kim đồng hồ.
*+(U)m:* Là ROBOT thực hiện m lần dãy lệnh U.
ở đây qui ước nếu m=1 thì có thể không cần viết giá trị của m. 
Nếu m=0 thì đoạn lệnh tương ứng đặt trước m 
sẽ được bỏ qua (ROBOT không phải thực hiện).
*Dữ liệu vào:* Cho trong File *ROBOT.INP* gồm 2 dòng:
+ Dòng 1: Chứa 2 số tự nhiên x0 y0 cách nhau 
một dấu cách cho biết vị trí xuất phát của *ROBOT.*
+ Dòng 2: Chương trình điều khiển của *ROBOT*. 
(Độ dài không vượt quá 250 kí tự)
Kết quả ghi ra File *ROBOT.OUT* gồm 1 dòng chứa
2 số tự nhiên x1 y1 cách nhau một dấu cách cho biết 
vị trí kết thúc của ROBOT sau khi hoàn thành chương trình di chuyển.

*Ví dụ:*
*ROBOT.INP*

*ROBOT.OUT*
5 10
(D50Q2D50q3d50qD100)10d2
5 12
​

----------


## tungnc273

*Đề chọn đội tuyển dự thi hsg qg tỉnh TG 2010-2011*

*Bài 1: Dãy số*
Cho trước 1 dãy số nguyên A, chứa N số nguyên có giá trị từ 1 đến N. Mỗi số nguyên chỉ xuất hiện đúng 1 lần trong dãy.
Một dãy con của A là dãy có được bằng cách xóa đi (hoặc có thể ko xóa) một vài số từ đầu dãy A và từ cuối dãy A.
Hãy tính xem có bao nhiêu dãy con khác nhau của A có độ dài lẻ mà có trung bình của dãy bằng B. Trung bình của dãy là phần tử nằm giữa của dãy sau khi sắp xếp dãy. vd trung bình của dãy {5,1,3} là 3.
Dữ liệu: vào từ tập tin văn bản NUM.INP có dòng đầu chứa 2 số nguyên dương N(1<=N<=100 000) và B(1<=B<=N). Dòng thứ hai chứa N số nguyên là các phần tử của dãy A.
Các số nằm trên cùng 1 dòng cách nhau bởi 1 dấu cách.
Kết quả: Ghi ra tập tin văn bản NUM.OUT chứa số dãy con của A có trung bình là B. vd:
NUM.INP
7 4
5 7 2 4 3 1 6
NUM.OUT
4
ghi chú: Trong vd trên có 4 dãy con của A có trung bình là 4: {4},{7,2,4},{5,7,2,4,3},{5,7,2,4,3,1,6}.

*Bài 2: Phép quay*
Cho trước 1 bảng kích thước R X C chứa các kí tự. Hãy thực hiện phép quay bảng theo chiều kim đồng hồ theo 1 góc k độ, với k là bội số của 45.
Dữ liệu: vào từ tập tin văn bản ROT.INP có dòng đầu chứa 2 số nguyên R và C cách nhau bởi 1 dấu cách (1<=R<=10,1<=C<=10), biểu diễn cho số dòng và số cột của bảng. Mỗi dòng trong R dòng tiếp theo chứa 1 dòng của bảng, là 1 xâu các kí tự chữ in thường. Dòng cuối cùng chứa số nguyên k là bội số của 45 và nằm giữa 0 và 360.
Kết quả: ghi ra tập tin văn bản ROT.OUT chứa bảng sau khi quay k độ theo chiều kim đồng hồ.
vd:
ROT.INP
3 5
damir
marko
darko
90
ROT.OUT
dmd
aaa
rrm
kki
oor
( còn 1 vd góc 45 độ nhưng do ko gõ đc khoảng trắng đầu dòng nên ko viết) 

*Bài 3: Sắp xếp chỗ ngồi*
Một quán cafe ngoài trời có dạng 1 hình chữ nhật kích thước nxm ô vuông, mỗi ô có thể 1 bàn hoặc 1 ghế hoặc để trống.
Quán cafe cần sắp xếp chỗ ngồi cho k người khách, do đó đòi hỏi cần phải đặt đúng k ghế sao cho mỗi ghế phải kề với ít nhất 1 bàn theo chiều ngang hay dọc hay chéo.
Dữ liệu: Vào từ tập tin vb CAFE.INP gồm 1 dòng chứa 3 số nguyên n,m và k.(1<=n,m<=50,1<=k<=10000) cách nhau bởi 1 dấu cách.
Kết quả: ghi ra tập tin vb CAFE.OUT chứa n dòng, mỗi dòng chứa m kí tự mô tả cách sx m chỗ ngồi cho k người khách.
_Qui ước:_'h' biểu diễn cho ghế, 'T' biểu diễn cho bàn, '.' biển diễn cho ô trống.
nếu ko có phương án sx thì in ra dòng <<khong the>>
nếu có nhiều phương án sx thì chỉ cần in ra 1 p.án
vd:
CAFE.INP
3 4 8
CAFE.OUT
hhh.
hTTh
.hhh
p/s: giúp mình thuật toán bài2, ko biết làm thế nào cả. thanks dear..

----------


## thanhdung0906

*Đề tỉnh BN năm nay 2K11*

bài 1 khỏi nói không khó(chắc chỉ cần biết đọc, viết ct pascal và có tí máu toán là OK)
bài 2:
Tên CT : CHONSO.PAS
cho day a1,a2,...an nguyên dương.
tìm day con thỏa:
ko có ba số ltiep của dãy con nằm trong dãy to [IMG]data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABAQMAAAA  l21bKAAAAA1BMVEXh5PJm+yKVAAAAAXRSTlMAQObYZgAAAApJR  EFUCNdjYAAAAAIAAeIhvDMAAAAASUVORK5CYII=[/IMG]
trong 2 số lt của dãy ban đầu có ít nhất 1 số có mặt trong dãy con
Tông các số trong dãy con là max
//dãy con: dãy lc bỏ đi các số và giữ trật tự các số còn lại.
File CHONSO.INP
dòng đầu chữa số n; n<=1000
n dòng sau, dòng thứ i chứa số ai (ai <=3000)

file CHONSO.OUT
dòng đầu chứa số M, T (M là số lượng các số hạng, T là tổng các số ấy)
các dòng sau mỗi dòng chứa số jk là chỉ số của số hạng được chọn

bài 3:
file BANDO.PAS
bản đồ của một nước là hcn MxN ô
đnc chia làm nhiều vùng. mỗi vùng là tập các ô chung cạnh vs nhau liên thông và dduwopwcj ghi = 1 số trên bản đồ. Số vùng <= 200
Hãy tô mau cho bản đồ sao cho mỗi vùng một màu và hai vùng tiếp giáp nhau(hai vùng có ít nhất một cạnh chung) ko dc tô cùng một màu. Tìm cách tô vs số màu ít nhất
BANDO.INP
dòng đầu là 2 số MxN (M, N <=50)
M dòng tiếp mỗi dòng N số thể hiện bản đồ (các số thược kiểu int)
BANDO.OUT
dòng đầu ghi K là số màu tô ít nhất tìm dc
M dòng sau, mỗi dòng N số thể hiện cách tô màu (dùng các màu từ 1 .. K)

:emlaugh:hum wa vừa thi xong, hnay post lên nd chính của đề cho bà con ở xa "châm cứu":emlaugh:

----------


## minhdo1213

*Nản!*

:realmad::realmad::realmad::emlaugh:

Đề đưa lên nhiều thế nhưng ko có lời giải đáp nào kả!
Thế thì ai chả làm đc.
Đề thì đầy

----------

