đề thi giúp cho các bạn có thêm tài liệu để ôn tập đề thi giúp cho các bạn có thêm tài liệu để ôn tập đề thi giúp cho các bạn có thêm tài liệu để ôn tập đề thi giúp cho các bạn có thêm tài liệu để ôn tập đề thi giúp cho các bạn có thêm tài liệu để ôn tập đề thi giúp cho các bạn có thêm tài liệu để ôn tập
Đề thi học sinh giỏi Tin thành phố Hà Nội Lớp 12 năm 2010 - 2011 Bài 1: Đèn nhấp nháy Trong dịp đại lễ 1000 năm thăng long hà nội, An quan sát thấy nhiều đèn nhấp nháy được trang trí trên các đường phố. Vốn là một học sinh yêu thích môn tin học và vật lý. An quyết định tự tạo một dây đèn nhấp nháy đặc biệt. Dây đèn của An gồm n bóng nối tiếp nhau, đánh số thứ tự từ 1 đến n và được điều khiển theo nguyên tắc: Bắt đầu từ thời điểm 0 tất cả các bóng đèn đều ở trạng thái tắt, bóng thứ i sẽ lóe sáng và các thời điểm ti, 2 ti, 3 ti (i=1,2, ,n). An chờ đợi và muốn biết thời điểm nào mà cả n bóng đều cùng lóe sáng. Ví dụ t1 = 4 thì tại các thời điểm 4, 8 , 12 , 16, 20 bóng đèn 1 lóe sáng, t2=6 thì tại các thời điểm 6, 12, 18, 24, 30 bóng đèn 2 sẽ lóe sáng. Như vậy, thời điểm 12 sẽ là thời điểm sớm nhất mà cả 2 bóng đèn đều cùng lóe sáng. Yêu cầu: Cho t1, t2, tn, hãy giúp An tính thời điểm sớm nhất mà tất cả n bóng đều lóe sáng. Dữ liệu: Vào từ file văn bản Bai1.INP có dạng: - Dòng đầu tiên chứa số nguyên dương n (2 <= n <= 30) - Dòng thứ hai chứa n số nguyên dương t1, t2, tn (ti <= 10^6). Kết quả: Ghi ra file văn bản Bai1.Out thời điểm sớm nhất mà tất cả n bóng đèn đều lóe sáng. Ví dụ Bai1.INP: 2 4 6 Bai1.OUT 12 Bài 2: Mật khẩu Một xâu ký tự được gọi là mật khẩu "an toàn" nếu xâu có độ dài ít nhất = 6 và xâu chứa ít nhất một chữ cái in hoa ('A' 'Z'), một chữ cái thường, một chữ số. Ví dụ: 'a1B2C3', 'tinHoc6' là hai mật khẩu "an toàn", còn 'a1B2C', 'a1b2c3', 'A1B2C3', 'tinhoc' đều không phải là mật khẩu "an toàn". Một lần, Bình nhìn thấy một xâu S, chỉ gồm các loại ký tự: chữ cái in hoa, chữ cái thường và chữ số. Bình muốn tự kiểm tra khả năng đoán nhận mật khẩu bằng cách đếm xem có bao nhiêu cặp chỉ số (i,j) thỏa mãn đkiện: 1 <=i<j<=length(s) và xâu con gồm các ký tự liên tiếp từ i đến j của S là mật khẩu "an toàn". Yêu cầu: Cho xâu S, tính số lượng cặp chỉ số (i,j) thỏa mãn điều kiện nêu trên. Dữ liệu: Vào từ file văn bản Bai2.INP gồm một dòng chứa xâu S có độ dài không quá 100. Kết quả: Ghi ra file văn bản Bai2.OUT một số nguyên là số lượng cặp chỉ số (i,j) tính được. Ví dụ: Bai2.INP abc3456789PQ Bai2.OUT 6 Ví dụ 2: Bai2.INP abc123 Bai2.OUT 0 Bài 3: Bàn cờ Cho một bàn cờ kích thước m x n ô, các dòng được đánh số từ 1 đến m từ trên xuống dưới, các cột được đánh số từ 1 đến n từ trái qua phải. Ô nằm ở vị trí dòng i và cột j của lưới được gọi là ô (i,j) và khi đó, i được gọi là chỉ số còn j được gọi là chỉ số cột của ô này. Được phép đặt một quân vua vào một ô của bàn cờ (mỗi ô đặt không quá một quân), khi đó nó có thể khống chế 8 ô lân cận xung quanh (8 ô được đánh số từ 1 đến 8, xem hình vẽ dưới đây). 1 2 3 8 x 4 (x là quân hậu) 7 6 5 Trên bàn cờ đã đặt trước một số quân vua (không có 2 quân nào khống chế nhau), người ta muốn đặt thêm nhiều nhất các quân vua lên bàn cờ mà vẫn đảm bảo không có 2 quân vua nào khống chế nhau. Yêu cầu: Cho biết các ô đã đặt quân vua, hãy đặt thêm nhiều nhất quân vua lên bàn cờ sao cho trên bàn cờ không có 2 quân nào khống chế nhau. Dữ liệu: Vào từ file văn bản Bai3.INP có dạng - Dòng đầu tiên chứa 3 số nguyên m,n,k (0<m , n < 30; 0 <=k<=m mx n). Trong đó m,n là kích thước bàn cờ, k là số quân vua đã được đặt trên bàn cờ. - Dòng thứ i trong k dòng tiếp theo gồm 2 số ai ,bi là chỉ số dòng và chỉ số cột của ô thứ i đã có quân vua. Kết quả: Ghi ra file văn bản Bai3.OUT có dạng: - Dòng đầu tiên ghi số nguyên s là số lượng nhiều nhất quân vua được đặt thêm lên bàn cờ. - Dòng thứ i trong s dòng tiếp theo gồm 2 số xi, yi là chỉ số dòng và chỉ số cột của quân vua thứ i được đặt thêm lên bàn cờ (nếu có nhiều phương án đưa ra một phương án bất kỳ). Ví dụ: Bai3.INP 2 3 0 Bai3.OUT 2 1 1 2 3 Ví dụ 2 Bai3.INP 3 3 1 2 2 Bai3.OUT 0 Được sửa bởi vzic lúc 17:15 ngày 16-10-2010 Quote 16-10-2010 17:10 #2 Heroboss12 View Profile View Forum Posts Visit Homepage Registered User Tham gia 26-12-2008 Bài viết 41 Like 0 Thanked 1 Time in 1 Post Bài này có vẻ như là tìm bội chung nhỏ nhất của n số t1,t2 tn. vzic còn bài 2 bài 3 gì đó post luôn đi. Thanked 0 Times in 0 Posts Bài 2 : Xâu S chỉ có 100 ký tự nên ta vét cạn Function kiemtra(i,j:integer); Var ct,ch,cs:Boolean; k:integer; Begin ct:=false; ch:=false; cs;=false; For k:=i to j do Begin Case a[k] of 'A' 'Z':ch:=true; 'a' 'z':ct:=true; '1' '9':cs:=true; End; End; If ct and cs and ch then kiemtra:=true; End; BEGIN For i:=1 to length(S)-5 do For j:=i+5 to length(S) do Begin If Ktra(i,j) then dem:=dem+1; End; END; Quote Mọi người xem hộ em bài 3 cái không hiểu sao với các test nhỏ (n,m<20) thì các toạ độ được viết xuống dòng, còn lại thì nó lại write trên cùng 1 dòng. đây là code bài 3 của em {$A+,B-,D+,E+,F-,G-,I+,L+,N-,O-,P-,Q-,R-,S+,T-,V+,X+} {$M 16384,0,655360} program bai3; uses crt; var dd:array[1 30,1 30] of boolean; m,n,i,j,k:integer;a,b:byte; tong:integer; f,g,f1:text; procedure put(i,j:byte); var p:byte; begin dd[i,j-1]:=false; dd[i-1,j]:=false; dd[i,j+1]:=false; dd[i+1,j]:=false; dd[i-1,j+1]:=false; dd[i+1,j-1]:=false; dd[i+1,j+1]:=false; dd[i-1,j-1]:=false; dd[i,j]:=false; end; procedure nhap; var x:byte;f:text; begin tong:=0; assign(f,'bai3.inp'); reset(f); readln(f,m,n,k); for i:=1 to m do for j:=1 to n do dd[i,j]:=true; for x:=1 to k do begin read(f,i,j); put(i,j); end; close(f); end; procedure tinh; var dem:integer; begin for i:=1 to m do for j:=1 to n do if dd[i,j] then begin put(i,j); inc(tong); end; end; procedure tinh2; var dem:integer; begin for i:=1 to m do for j:=1 to n do if dd[i,j] then begin writeln(f,i,' ',j); put(i,j); end; end; BEGIN assign(f,'bai3.out'); rewrite(f); nhap; tinh; writeln(f,tong); nhap; tinh2; close(output); END. Thank trước Quote 22-10-2010 16:24 #5 noel_trang View Profile View Forum Posts Registered User Tham gia 11-02-2010 Bài viết 39 Like 1 Thanked 0 Times in 0 Posts hi, mình cũng vừa thi xong (đc 16.5 điểm) bài 3 nếu làm như cách của bạn thì ko đúng hoàn toàn đâu. VD: input: 4 13 5 1 5 2 2 2 8 2 11 2 13 output: nếu làm theo cách của bạn thì kq là 6, nhưng thực tế phải là 7. Bài 1 bạn làm thế nào? Với 50% test lớn thì cách tìm ucln có vẻ ko khả thi. Nhưng cũng ko thể phân tích thành thừa số nguyên tố vì phải dùng TP. Quote Posts thế theo bạn bài 3 làm như thế nào. mình chỉ dùng đánh dấu toàn bộ mảng bằng 1 mẳng đánh dấu 30*30, sau đó nhập tử tệp, đặt những con vua vào ô, sau đó duyệt toàn bộ những ô còn lại thôi. Còn bài 1 thì theo mình là phải phân tích số, chứ làm bcnn=tích/ucln thì có vẻ ko khả thi lắm. vì nếu test cho toàn số nguyên tố thì chạy khá lâu. Bài 3: đặt vào ô nào kiểm soát đc ít ô nhất. uses crt; const fi='banco.i12'; fo='banco.o12'; nm=31; x:array[1 8] of shortint=(-1,0,1,-1,1,-1,0,1); y:array[1 8] of shortint=(-1,-1,-1,0,0,1,1,1); var f:text;m,n:byte;k:word;a,b:array[0 nm,0 nm] of byte;d:word; tx,ty:array[1 nm*nm] of byte; procedure nhap; var i:word;j,u,v:byte; begin assign(f,fi);reset(f); readln(f,m,n,k);fillchar(a,sizeof(a),0); for i:=1 to k do begin readln(f,u,v); for j:=1 to 8 do a[u+x[j],v+y[j]]:=2; a[u,v]:=1; end; close(f); end; procedure timmin(var im,jm:byte); var i,j,k:byte;min:byte; begin fillchar(b,sizeof(b),0);min:=255;im:=0;jm:=0; for i:=1 to m do for j:=1 to n do if a[i,j]=0 then begin for k:=1 to 8 do if (i+x[k]>0) and (i+x[k]<=m) and (j+y[k]>0) and (j+y[k]<=n) and (a[i+x[k],j+y[k]]>=0) then inc(b[i,j]); if b[i,j]<min then begin min:=b[i,j];im:=i;jm:=j; end; end; end; procedure xuli; var im,jm,k:byte; begin d:=0; repeat timmin(im,jm); if (im=0) then break;inc(d);tx[d]:=im;ty[d]:=jm; a[im,jm]:=1;for k:=1 to 8 do a[im+x[k],jm+y[k]]:=2; until false; end; procedure xuat; var i:word; begin assign(f,fo);rewrite(f); writeln(f,d); for i:=1 to d do writeln(f,tx[i],' ',ty[i]); close(f); end; begin nhap;xuli;xuat; end. . Đề thi học sinh giỏi Tin thành phố Hà Nội Lớp 12 năm 2010 - 2011 Bài 1: Đèn nhấp nháy Trong dịp đại lễ 1000 năm thăng long hà nội, An quan sát thấy nhiều đèn. hà nội, An quan sát thấy nhiều đèn nhấp nháy được trang trí trên các đường phố. Vốn là một học sinh yêu thích môn tin học và vật lý. An quyết định tự tạo một dây đèn nhấp nháy đặc biệt. Dây đèn. điểm 4, 8 , 12 , 16, 20 bóng đèn 1 lóe sáng, t2=6 thì tại các thời điểm 6, 12, 18, 24, 30 bóng đèn 2 sẽ lóe sáng. Như vậy, thời điểm 12 sẽ là thời điểm sớm nhất mà cả 2 bóng đèn đều cùng lóe