Chữ số thứ I đợc gắn một số nguyên dơng aI đợc gọi là trọng lợng của nã thø tù c¸c ch÷ sè trong phÇn ®Çu cña m· tÝnh tõ tr¸i qua ph¶i.. Ngêi ta lÊy lÇn lît c¸c ch÷ sè trong m· nh©n víi t[r]
Trang 1SỞ GD&ĐT NGHỆ AN
(Đề thi cú 03 trang)
KỲ THI CHỌN HỌC SINH GIỎI CẤP TỈNH LỚP 12
NĂM HỌC 2010 – 2011
Mụn thi: TIN HỌC LỚP 12 THPT - BẢNG A
Thời gian làm bài: 180 phỳt
B i 1 à (4,5 điểm) Phân tích số
Với số nguyên dơng x, gọi f(x,k) là số cách phân tích số x thành tổng các số nguyên tố mà mỗi số nguyên tố có trong tổng không quá k lần
ví dụ
f(12,3) =5 vì có 5 cách phân tích:
12 = 2 + 2 + 2 + 3 + 3; 12 = 2 + 2 + 3 + 5; 12 = 2 + 3 + 7;
12 = 2 + 5 + 5; 12 = 5 + 7
f(12,1) =2 vì có 2 cách phân tích
12 = 2 + 3 + 7; 12 = 5 + 7
Cho một dãy số nguyên dơng a1,a2,…,aN và số nguyên dơng k( 1≤ N,k ≤ 100) Hãy tính các f(ai,k) (với mọi i=1,2,…,N)
Dữ liệu vào: Từ file văn bản PTS.INP có cấu trúc nh sau:
Dòng đầu tiên ghi 2 số nguyên dơng theo thứ tự N, k
Dòng thứ 2 ghi N số nguyên dơng a1, a2,…, aN.( 1 < aI ≤ 100)
Kết quả: Ghi ra file văn bản PTS.OUT, gồm N số nguyên viết trên một dòng, số
thứ i là f(ai,k)
Cả 2 file dữ liệu thứ tự các số trên một dòng tính từ trái qua phải và cách nhau một dấu cách
Ví dụ:
5 6
15 8 9 23 47 12 3 4 35 414
Bài 2 (5,5 điểm) Mã Số
Để tiện trong công tác quản lý, một công ty đã gắn mã số cho các nhân viên của mình Mã số của mỗi nhân viên bao gồm bảy chữ số( gọi là phần đầu của mã nhân viên) và một chữ cái in hoa nối phía sau Chữ cái này đợc tính toán từ bảy chữ
số phần đầu của mã theo các bớc nh sau:
1 Chữ số thứ I đợc gắn một số nguyên dơng aI đợc gọi là trọng lợng của nó( thứ tự các chữ số trong phần đầu của mã tính từ trái qua phải) Ngời ta lấy lần
l-ợt các chữ số trong mã nhân với trọng lợng tơng ứng của nó
2.Cộng tất cả các kết quả
3 Tìm số d của phép chia tổng trên cho số nguyên dơng K ( 1≤ K ≤ 11)
4 Mỗi số d tơng ứng với một chữ cái in hoa Chữ cái in hoa tơng ứng tìm đợc
là chữ cái nối phía sau của mã nhân viên
Cho trớc phần đầu của mã nhân viên, hãy tìm chữ cái in hoa nối phía sau
Dữ liệu vào: Từ file văn bản MASO.INP có cấu trúc nh sau:
Dòng đầu tiên ghi số nguyên dơng K
Dòng thứ 2 ghi một xâu gồm 7 chữ số là phần đầu của mã nhân viên
Dòng thứ 3 ghi 7 số nguyên dơng, số thứ I là trọng lợng của chữ số thứ I trong phần đầu của mã Các số cách nhau một ký tự trắng
Dòng cuối cùng ghi một xâu có độ dài Kgồm các chữ cái tiếng Anh in hoa, chữ cái thứ I tơng ứng với số I-1 là số d của phép chia của tổng tìm đợc cho K
Kết quả: Ghi ra file văn bản MASO.OUT, chứa chữ cái tìm đợc.
Ví dụ:
11
Đề chớnh thức
Trang 22 7 6 5 4 3 2 JABCDEFGHIZ
Bài 3 (5,0 điểm) Sa mạc
Sa mạc là lới ô vuông cấp MxN ( 1≤ N,M ≤ 100) Trên mỗi ô của lới ngời ta ghi một số nguyên a( 1≤ a ≤ 100) đợc gọi là năng lợng của ô đó Một con lạc đà
đang ở ô (i,j) của lới chỉ đợc đi đến một trong hai ô (i+1,j) hoặc ô (i,j+1) Lạc đà đi
đến ô nào thì hấp thụ đợc nguồn năng lợng tại ô đó Hãy tìm cho lạc đà một đờng
đi từ ô (1,1) đến ô (M,N) theo nguyên tắc trên và hấp thụ đợc nhiều năng lợng nhất
Dữ liệu vào: Từ file văn bản SAMAC.INP, dòng đầu tiên thi 2 số nguyên
d-ơng theo thứ tự M, N
Dòng thứ I trong M dòng tiếp theo ghi N số nguyên dơng, số thứ J là năng l-ợng trên ô (I , J) của sa mạc.( số thứ tự của các số trên một dòng tính từ trái qua phải)
Kết quả: Ghi ra file văn bản SAMAC.OUT, dòng đầu tiên ghi số S là năng
l-ợng mà lạc đà hấp thụ đợc Từ dòng thứ 2 trở đi mỗi dòng ghi 2 số nguyên dơng là toạ độ các ô theo thứ tự trên đờng đi của lạc đà
Ví dụ:
4 5
1 5 1 3 4
6 7 9 1 5
1 1 8 4 1
1 3 4 3 3
41
1 1
2 1
2 2
2 3
3 3
3 4
4 4
4 5 Cả hai file dữ liệu, các số trên một dòng cách nhau một ký tự trắng
Bài 4 (5,0 điểm) Hội trại
Nhân dịp ngày thành lập công ty, ban Giám đốc công ty X tổ chức cho cán
bộ công nhân viên một cuộc hội trại Thời điểm tính trong ngày hội trại là phút, thời điểm ban đầu là 0 Công ty có N cán bộ công nhân viên Ngời thứ I có mặt tại hội trại từ thời điểm aI đến thời điểm bI Hãy lập trình giải quyết các công việc sau
đây:
1 Tìm cho ban Giám đốc một thời điểm sớm nhất đến thăm hội trại để gặp đợc nhiều cán bộ nhất
2 Tìm một khoảng thời gian dài nhất tại địa điểm hội trại không có ai cả, nếu
có nhiều khoảng thời gian nh thế hãy đa ra khoảng thời gian sớm nhất
Dữ liệu vào: Từ file văn bản: HOITRAI.INP, có cấu trúc nh sau:
Dòng đầu tiên ghi số N là số cán bộ của công ty ( ( 1≤ N ≤ 10000)
Dòng thứ I trong N dòng tiếp theo ghi 2 số nguyên dơng aI và bI là khoảng thời gian có mặt tại hội trại của cán bộ thứ I
Kết quả: Ghi ra file văn bản HOITRAI.OUT nh sau:
Dòng đầu tiên ghi số T là thời điểm ban Giám đốc đến thăm hội trại
Dòng thứ 2 ghi 2 số nguyên a, b là khoảng thời gian từ a đến b không
có ai ở hội trại Nếu không tìm đợc ghi số 32675 hai lần
Cả hai file dữ liệu, các số trên một dòng cách nhau một ký tự trắng
Ví dụ:
7
1 320
400 1000
351 1200
380 1336
623
321 350
Trang 3452 1430
512 1230
623 1105
Hết
………
Chú ý: - Chơng trình giải các bai1, bài 2, bài 3, bài 4 lần lợt ghi lên đĩa với các tên Bai1.pas; Bai2.pas; Bai3.pas; Bai4.pas.
- Giám thị không phải giải thích gì thêm.
Trang 4Bài 1:
uses crt;
const
tfi='pts.IN9876543210';
tfo='PTS.OU9876543210';
maxMN=100;
NTO: array[1 25] of integer=( 2, 3, 5,
7,11,13,17,19,23,29,
31,37,41,43,47,53,59,61,67,71,
73,79,83,89,97);
var
fi,fo: text;
M,N,k: integer;
a: array[1 100] of integer;
x,y: array[0 100] of real;
procedure Docdl;
var i,j: integer;
begin
readln(fi,n,k);
for i:=1 to N do read(fi,a[i]);
end;
procedure ChuanBi;
var i,j,l: integer;
begin
for i:=0 to 100 do x[i]:=0; {khong xac dinh} for j:=0 to k do
begin
if j*NTO[1]>100 then break;
x[j*NTO[1]]:=1;
end;
for l:=2 to 25 do
begin
y:=x;
for i:=1 to 100 do
begin
x[i]:=0;
for j:=0 to k do
begin
if i-j*NTO[l]<0 then break; x[i]:=x[i]+y[i-j*NTO[l]]; end;
end;
Trang 5end;
end;
procedure Inkq;
var i,j: integer;
begin
for i:=1 to N do write(fo,x[a[i]]:0:0,' '); end;
BEGIN
assign(fi,tfi); reset(fi);
assign(fo,tfo); rewrite(fo);
Docdl;
ChuanBi;
Inkq;
close(fi); close(fo);
END
Đề và bảng A và bảng B giống nhau chỉ khác bài 1