1. Trang chủ
  2. » Trung học cơ sở - phổ thông

Đề thi học sinh giỏi tin thành phố hà nội lớp 12 năm 2010

8 3,6K 15

Đang tải... (xem toàn văn)

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 8
Dung lượng 61,5 KB

Nội dung

đề 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

Trang 1

Đề 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)

Trang 2

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

Trang 3

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

Trang 4

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);

Trang 5

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

Trang 6

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

Trang 7

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);

Trang 8

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

Ngày đăng: 18/09/2014, 17:52

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w