Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (153.6 KB, 8 trang )
<span class='text_page_counter'>(1)</span>SỞ GD&ĐT NGHỆ AN. KỲ THI CHỌN HỌC SINH GIỎI CẤP TỈNH LỚP 12 NĂM HỌC 2010 – 2011. Đề chính thức. Môn thi: TIN HỌC LỚP 12 THPT - BẢNG B Thời gian làm bài: 180 phút. (Đề thi có 03 trang) Bài 1: (5.5 ®iÓm). tÇn sè. Cho dẫy số nguyên dơng, số lần xuất hiện của một số đợc gọi tần số của số nguyên đó. Hãy tìm số nguyên dơng có tần số cao nhất và tần số tơng ứng của nó. D÷ liÖu vµo: Cho tõ file v¨n b¶n MAX.INP bao gåm: Dßng ®Çu tiªn chøa mét sè nguyªn N( 1≤ N ≤ 10000) lµ sè lîng c¸c sè nguyªn trong d·y. Mçi dßng trong N dßng tiÕp theo chøa sè nguyªn M( 1≤ M ≤ 1000) trong d·y. KÕt qu¶: Ghi ra file v¨n b¶n MAX.OUT, gåm 2 sè nguyªn viÕt trªn mét dßng, sè thø nhÊt ghi sè nguyªn cã tÇn sè cao nhÊt, sè thø 2 lµ tÇn sè cña nã( trong tr êng hîp cã nhiÒu sè nguyªn cã tÇn sè cao nhÊt b»ng nhau, h·y ®a ra sè nguyªn nhá nhÊt vµ tÇn sè cña nã). Hai sè c¸ch nhau mét ký tù tr¾ng. MAX.INP 9 1 2 5 6 3 7 2 5 2 Bµi 2: (5.5 ®iÓm). MAX.OUT 2 3. MAX.INP 7 2 4 6 7 7 2 4. MAX.OUT 2 2. 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ô: MASO.IN MASO.OUT.
<span class='text_page_counter'>(2)</span> 11 6830907 2 7 6 5 4 3 2 JABCDEFGHIZ Bµi 3: (4.5 ®iÓm). D. 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ô: SAMAC.INP SAMAC.OUT 4 5 41 1 5 1 3 4 1 1 6 7 9 1 5 2 1 1 1 8 4 1 2 2 1 3 4 3 3 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. Héi tr¹i. Bµi 4: (4.5 ®iÓm). 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ô: HOITRAI.INP 7 1 320 400 1000 351 1200. HOITRAI.OUT 623 321 350.
<span class='text_page_counter'>(3)</span> 380 452 512 623. 1336 1430 1230 1105. ------------------------------ HÕt ------------------------------. Hä vµ tªn thÝ sinh …………………………………………………. Sè b¸o danh ………………. 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..
<span class='text_page_counter'>(4)</span> Bài 1: const var. fi='Max.inp'; fo='max.out'; a:array[1..1000] of integer; n,m,i,d,so:integer; f:text;. begin assign(f,fi); reset(f); readln(f,n); d:=0; so:=0; for i:=1 to n do begin readln(f,m); inc(a[m]); end; for i:=1 to m do if a[i]>d then begin d:=a[i]; so:=i; end;. close(f); assign(f,fo); rewrite(f); writeln(f,so,' ',d); close(f); end. Bài 2: const fi='MASO.INP'; fo='MASO.out'; var t: array[1..7] of byte; d: array[0..10] of char; k: integer; f: text; s,s1: string; tong,i,c,n,du: integer; procedure doc; begin assign(f,fi); reset(f); readln(f,k); readln(f,s); for i:=1 to 7 do read(f,t[i]);.
<span class='text_page_counter'>(5)</span> readln(f); for i:=0 to k-1 do read(f,d[i]); close(f);. end; function kq: char; begin tong:=0; for i:=1 to length(s) do begin s1:=s[i]; val(s1,n,c); tong:=tong+n*t[i]; end; du:=tong mod k; kq:=d[du]; end; begin doc; assign(f,fo); assign(f,fo); rewrite(f); write(f,kq); close(f); end. Bài 3: program SA_mac; const f1 ='samac.inp'; fo ='samac.out'; var a : array[1..100,1..100] of integer; b : array[0..100,0..100] of longint; m,n,i,j : integer; f : text; {==============================} procedure khoi_tao; begin assign(f,f1); reset(f); readln(f,m,n); for i:=1 to m do begin for j:=1 to n do read(f,a[i,j]); readln(f); end; close(f);.
<span class='text_page_counter'>(6)</span> fillchar(b,sizeof(b),0); end; {=============================} procedure xu_ly; begin for i:=1 to m do for j:=1 to n do if b[i,j-1]>b[i-1,j] then b[i,j]:=a[i,j]+b[i,j-1] else b[i,j]:=a[i,j]+b[i-1,j]; end; {==============================} procedure thong_bao; var dd : array[1..2,1..199] of integer; k : integer; begin assign(f,fo); rewrite(f); writeln(f,b[m,n]); i:=m; j:=n; k:=m+n-1; while (i>=1) and(j>=1) do begin dd[1,k]:=i;dd[2,k]:=j; dec(k); if b[i,j-1]>b[i-1,j] then j:=j-1 else i:=i-1; end; for i:=1 to m+n-1 do writeln(f,dd[1,i],' ',dd[2,i]); close(f); end; {======= chuong trinh chinh =============} BEGIN khoi_tao; xu_ly; thong_bao; END. Bài 4: program hoi_trai; const f1 fo. = 'hoitrai.inp'; = 'hoitrai.out';.
<span class='text_page_counter'>(7)</span> var a : array[0..1439] of integer; max_cuoi,n : integer; max_dau,t_diem : integer; f : text; {===================================} procedure khoi_tao; var i,j,t1,t2 : integer; begin fillchar(a,sizeof(a),0); assign(f,f1); reset(f); readln(f,n); for i:=1 to n do begin readln(f,t1,t2); for j:=t1 to T2 do inc(a[j]); end; close(f); end; {=====================================} procedure cau1; var i,max : integer; begin max:= a[0]; t_diem:=0; for i:=1 to 1439 do if a[i]>max then begin max:=a[i]; t_diem:=i; end; end; {======================================} procedure cau2; var i,j,dem,dau,cuoi: integer; begin i:=1; max_dau:=32675; max_cuoi:=32675; while i<=1439 do if a[i]<>0 then inc(i) else begin.
<span class='text_page_counter'>(8)</span> dau:=i; j:=i; while (a[j]=0) and (j<=1439) do inc(j); if j-i>max_cuoi-max_dau then begin max_cuoi:=j-1; max_dau:=i; end; i:=j; end; writeln('dau =',max_dau,' cuoi= ',max_cuoi);readln; end; {====================================} procedure thong_bao; begin assign(f,fo); rewrite(f); writeln(f,t_diem); writeln(f,max_dau,' ',max_cuoi); close(f); end; {=========== CHUONG TRINH CHINH==========} BEGIN khoi_tao; cau1; cau2; thong_bao; END..
<span class='text_page_counter'>(9)</span>