SỞ GD & ĐT VĨNH PHÚCĐỀ CHÍNH THỨC KỲ THI CHỌN HSG LỚP 9 THCS NĂM HỌC 2010-2011 ĐỀ THI MÔN: TIN HỌC Thời gian làm bài: 150 phút, không kể thời gian giao đề Tổng quan chương trình File dữ
Trang 1SỞ GD & ĐT VĨNH PHÚC
ĐỀ CHÍNH THỨC
KỲ THI CHỌN HSG LỚP 9 THCS NĂM HỌC 2010-2011
ĐỀ THI MÔN: TIN HỌC
Thời gian làm bài: 150 phút, không kể thời gian giao đề
Tổng quan
chương trình
File
dữ liệu
File kết quả
Thời gian
1 Truy tìm tội phạm BLIMP.PAS BLIMP.INP BLIMP.OUT 1s/test
Lập chương trình giải các bài toán sau:
Bài 1 Truy tìm tội phạm
Tom và Jerry là thành viên của tổ chức mật thám USKOK đang theo dõi sự di chuyển của một tổ chức tội phạm Theo một nguồn tin dấu tên cho biết các tên tội phạm thuộc tổ chức này đang tìm cách chạy chốn khỏi địa phương và hiện đang ở sân bay để làm thủ tục xuất cảnh.
Cục tình báo CIA gửi cho Tom và Jerry một thông tin rất quan trọng: tên của mỗi tên tội phạm này đều có chuỗi “FBI” Bằng mối quan hệ của mình, Tom và Jerry có được một danh sách gồm N hành khách đang chuẩn bị bay.
Viết chương trình giúp Tom và Jerry giữ lại các tên tội phạm nguy hiểm này.
Dữ liệu vào:
• Dòng 1: Ghi một số nguyên N (1≤ N ≤ 10)
• N dòng tiếp theo, mỗi dòng ghi tên của một hành khách Tên của hành khách không quá 15 ký tự bao gồm các chữ cái từ “A” đến “Z”, chữ số từ “0” đến “9” và dấu “-”
Dữ liệu ra:
• Một dòng duy nhất ghi thứ tự của tên tội phạm trong danh sách, nếu không có tên tội phạm nào trong danh sách thì in ra “GO”
Ví dụ:
1
N-FBI1
9A-USKOK I-INTERPOL G-MI6
RF-KGB1
47-FBI BOND-007 RF-FBI18 MARICA-13 13A-FBILL
Bài 2 Số bé nhất
Trang 2109) Dữ liệu vào đảm bảo luôn có nghiệm.
Dữ liệu ra: Một dòng duy nhất ghi một số nguyên tìm được.
Ví dụ:
Input Output
96 105 3 102
Giải thích ví dụ: Đoạn [96; 105] có 4 số chia hết cho 3 là 96, 99, 102, 105 Dãy số trên được xếp theo thứ tự từ điển ở dạng xâu là 102, 105, 96, 99 Vậy đáp án phải tìm là 102.
Bài 3 Nhà giam
Sau khi tìm ra được tên chỉ huy của tổ chức tội phạm, Tom và Jerry được lệnh đưa chúng về nhà giam đặc biệt của CIA Nhà giam này có khuôn viên hình chữ nhật, tất cả các căn phòng của nhà giam đều bằng nhau, có hình lục giác đều, được đánh số tự 0, 1, 2, … theo hàng ngang từ trái qua phải và từ trên xuống dưới (xem hình vẽ)
Gọi S là kích thước của nhà giam và được hiểu là:
• Tổng số phòng xếp theo chiều từ trên xuống dưới của một cột bất kỳ đúng bằng S;
• Tổng số phòng đồng trục theo hàng tính từ cột ngoài cùng bên trái đến cột cuối cùng bên phải đúng bằng S.
Ví dụ cho hình dưới đây S = 3.
Theo yêu cầu của CIA, tên chỉ huy phải được giam biệt lập tại phòng thứ N Nhiệm vụ tiếp theo của Tom và Jerry là tìm ra số hiệu các phòng liền kề với phòng N để đặt Camera quan sát.
Viết chương trình giúp Tom và Jerry thực hiện yêu cầu trên.
Dữ liệu
Một dòng duy nhất ghi hai số nguyên S, N (2 ≤ S ≤ 109), dữ liệu đảm bảo luôn có phòng số hiệu N.
Ví dụ:
Input Output
3 11 6 8 9 13 14
-Hết -Cán bộ coi thi không giải thích gì thêm.
Họ và tên thí sinh:………Số báo danh:………
0 3 6
1 4 2
5 8 1
3
1 1
9 7
1 2 1 4
Trang 3Bà i 1
Uses Crt;
Const Fi='Blimp.INP';
Fo='Blimp.OUT';
Type MA=Array[1 10] Of String[15];
Var s:MA;
F,G:Text;
i,n,d,k,j:Integer;
Procedure Nhap;
Begin
Assign(F,Fi);Reset(F);
ReadLn(F,n);
For i:=1 To n Do
ReadLn(F,S[i]);
Close(F);
End;
Procedure Xu_ly;
Begin
Assign(G,Fo);ReWrite(G);
d:=0;
For i:=1 To n Do
Begin
k:=0;
For j:=1 To LengTh(S[i]) Do
If (S[i][j] in ['A' 'Z']) Or (S[i][j] in ['0' '9']) Or (S[i][j] in ['-']) Then k:=k+1;
If (k=LengTh(S[i])) And (Pos('FBI',S[i])<>0) Then
Begin
Write(G,i:3);
d:=d+1;
End;
End;
If d=0 Then Write(G,'GO');
Close(G);
End;
BEGIN
Nhap;
Xu_ly;
END
Trang 4Uses Crt;
Const Fi='lexdiv.inp';
Fo='lexdiv.out';
Type MA=Array[1 100] Of String;
Var i,i1,j1,j2,a,b,k,m:Integer;
s,tg:String;
F,G:Text;
c:MA;
Procedure Nhap;
Begin
Assign(F,Fi);Reset(F);
ReadLn(F,A,B,K);
Close(F);
End;
Procedure Xu_ly;
Begin
Assign(G,Fo);ReWrite(G);
m:=0;
For i:=A To B Do
If i Mod k = 0 Then
Begin
m:=m+1;
Str(i,s);
c[m]:=s;
End;
For j1:=1 To m Do
For j2:=j1+1 To m Do
Begin
i1:=1;
While c[j1][i1]=c[j2][i1] Do i1:=i1+1;
If c[j1][i1]>c[j2][i1] Then
Begin
tg:=c[j1];
c[j1]:=c[j2];
c[j2]:=tg;
End;
End;
Write(G,c[1]:5);
Close(G);
End;
BEGIN
Nhap;
Xu_ly;
END
Trang 5Bà i 3:
Uses Crt;
Const Fi='prison.INP';
Fo='prison.OUT';
Type MA=Array[1 100] Of Integer;
Var A:MA;
F,G:Text;
s,n,i,j1,j,kt,d,m,k:Integer;
Procedure Nhap;
Begin
Assign(F,Fi);Reset(F);
ReadLn(F,S,N);
Close(F);
End;
Procedure Xu_ly;
Begin
If S Mod 2 =0 Then m:=s*(s*2-1)-1
Else m:=s*(s*2-1);
A[1]:=0;
A[2]:=2*s-1;
For j:=3 To s Do
A[j]:=A[j-1]*2-A[j-2];
A[s+1]:=s-1;
A[s+2]:=2*A[s+1]+s;
For j1:=s+3 To 2*s Do
A[j1]:=A[j1-1]*2-A[j1-2];
kt:=0;
For i:=1 To 2*s Do
If n=A[i] Then kt:=kt+1;
If (n<0)Or(n>m)Then Write(G,'Du lieu khong chinh xac')
Else
If (kt=0) Then
Begin
If ((n-2*s+1)>=0)And(n-2*s+1<=m)Then Write(G,n-2*s+1:5);
If (n-s>=0)And(n-s<=m)Then Write(G,n-s:5);
If (n-s+1>=0)And(n-s+1<=m)Then Write(G,n-s+1:5);
If (n+s-1>=0)And(n+s-1<=m)Then Write(G,n+s-1:5);
If (n+s>=0)And(n+s<=m)Then Write(G,n+s:5);
If (n+2*s-1>=0)And(n+2*s-1<=m)Then Write(G,n+2*s-1:5);
End
Else
Begin
d:=0;
k:=1;
While n<>A[k] Do
Begin
k:=k+1;
d:=k;
End;
If k=1 Then Write(G,n+s:5,n+2*s-1:5)
Else
If k=s Then Write(G,n-2*s+1:5,n-s+1:5,n+s:5)
Else
If k=s+1 Then Write(G,n+s-1:5,n+2*s-1:5)
Else
Trang 6Xu_ly;
END