Đề thi Olympic 10-3 lần 3 môn Tin học Lớp 10 năm 2018 - Trường THPT TH Cao Nguyên (Có đáp án)

Câu 1. Cho trước dãy số. Hãy tìm một dãy con liền nhau cực đại có các phần tử bằng nhau
Dữ liệu vào : File DAYSO.INP
Dữ liệu ra: Ghi vào file DAYSO.OUT dãy con lớn nhất thỏa mãn bài toán
doc 7 trang Hải Đông 20/01/2024 2320
Bạn đang xem tài liệu "Đề thi Olympic 10-3 lần 3 môn Tin học Lớp 10 năm 2018 - Trường THPT TH Cao Nguyên (Có đáp án)", để tải tài liệu gốc về máy hãy click vào nút Download ở trên.

File đính kèm:

  • docde_thi_olympic_10_3_lan_3_mon_tin_hoc_lop_10_nam_2018_truong.doc

Nội dung text: Đề thi Olympic 10-3 lần 3 môn Tin học Lớp 10 năm 2018 - Trường THPT TH Cao Nguyên (Có đáp án)

  1. SỞ GIÁO DỤC VÀ ĐÀO TẠO TỈNH ĐẮK LẮK TRƯỜNG THPT THỰC HÀNH CAO NGUYÊN KÌ THI OLYMPIC 10-3 LẦN III; NĂM 2018 ĐỀ THI ĐỀ NGHỊ MÔN: TIN HỌC; LỚP: 10
  2. ĐỀ THI VÀ ĐÁP ÁN Câu 1. Cho trước dãy số. Hãy tìm một dãy con liền nhau cực đại có các phần tử bằng nhau Dữ liệu vào : File DAYSO.INP Dữ liệu ra: Ghi vào file DAYSO.OUT dãy con lớn nhất thỏa mãn bài toán DAYSO.INP DAYSO.OUT 1 2 2 3 4 4 4 4 5 6 7 7 7 4 4 4 4 Đáp án câu 1 (cau1.pas) Program DaysobangnhauMax; Var a:array[1 1000] of integer; n:integer; f1,f2:text; Procedure Doctep; begin assign(f1,'dayso.inp');reset(f1); assign(f2,'dayso.out');rewrite(f2); n:=0; while not eof(f1) do begin n:=n+1; read(f1,a[n]); end; end; procedure xuli; Var dem,max,i,j:integer; Begin dem:=1; max:=0; for i:=2 to n+1 do if (a[i]=a[i-1]) and (i max then max:=dem; dem:=1; end; dem:=1; for i:=2 to n+1 do if (a[i]=a[i-1]) and (i<=n) then dem:=dem+1 else begin
  3. if dem=max then begin for j:=i-max to i-1 do write(f2, a[j],' '); writeln(f2); end; dem:=1; end; close(f1);close(f2); end; BEGIN doctep; xuli; END. Câu 2: Sắp xếp xâu. Người ta định nghĩa: Từ là một nhóm ký tự đứng liền nhau. Cho một xâu St gồm các ký tự lấy từ tập ‘a’ ‘z’ và dấu cách. Xâu không quá 20 từ, mỗi từ dài không quá 10 ký tự. Yêu cầu: Sắp xếp các từ của xâu ký tự theo thứ tự không giảm của độ dài các từ trong xâu St. Dữ liệu vào: Cho trong file văn bản SAPXAU.INP, có cấu trúc: - Dòng 1: Ghi một xâu ký tự St (có ít nhất 1 từ). Dữ liệu ra: Ghi ra file văn bản SAPXAU.OUT, theo cấu trúc: - Dòng 1: Ghi các từ của xâu ký tự sau khi được sắp xếp. Các từ được ghi cách nhau đúng một dấu cách. Ví dụ: SAPXAU.INP SAPXAU.OUT KI THI OLYMPIC 10-3 LAN III KI III LAN THI 10-3 OLYMPIC Đáp án câu 2 (cau2.pas) program sap; const f1='sapxau.inp'; f2='sapxau.out'; type mm=array[1 20] of string; var a:mm; s,st,tg:string; d:integer; f:text; procedure doc; begin assign(f,f1); reset(f); readln(f,s); close(f); end; procedure xl; var x,j,i:integer; n:byte; begin
  4. n:=length(s); while s[1]=' ' do delete(s,1,1); while s[n]=' ' do delete(s,n,1); x:=pos(' ',s); while x>0 do begin delete(s,x,1); x:=pos(' ',s); end; s:=s+' '; for i:=1 to 20 do a[i]:=''; i:=0; while s length(a[j]) then begin tg:=a[i];a[i]:=a[j];a[j]:=tg; end; end; procedure xuat; var i:integer; begin assign(f,f2); rewrite(f); for i:=1 to d do write(f,a[i],' '); close(f); end; begin doc;xl;xuat; end. Câu 3: Xếp khách Một khách dạn có N phòng đôi ( phòng cho 2 người ) được đánh số từ 1 đến N. Khi có một đoàn khách đến thuê phòng, tiếp tân của khách sạn sẽ xếp khách vào phòng theo quy tắc sau: Mỗi cặp khách sẽ được xếp vào phòng có chỉ số nhỏ nhất trong số các phòng trống. Nếu số lượng khách của đoàn là số lẻ thì người cuối cùng của đoàn khách sẽ được xếp vào phòng có chỉ số nhỏ nhất trong số các phòng trống. Nếu không còn phòng trống, thì số khách chưa có phòng sẽ được
  5. xếp tuần tự từng người một vào phòng có chỉ số nhỏ nhất trong số các phòng mới có một khách ở ( của đoàn khách đến trước ). Đầu tiên tất cả các phòng của khách sạn là trống. Yêu cầu: Cho trước trình tự đến của các đoàn khách và số lượng khách của mỗi đoàn. Hãy xác định số lượng khách trong mỗi phòng của khách sạn. Dữ liệu: Vào từ file văn bản ROOM.INP: - Dòng đầu tiên chứa 2 số nguyên dương N ( 1 N 100) và G được ghi cách nhau bởi dấu cách. N là số phòng của khách sạn, G là số lượng đoàn khách. - Dòng thứ i trong số G dòng tiếp theo chứa số lượng khách của đoàn khách thứ i ( các đoàn khách được đánh số theo thứ tự đến khách sạn bắt đầu từ 1 ). Giả thiết rằng không có 2 đoàn khách nào đến khách sạn vào cùng một thời điểm và tổng số khách của tất cả các đoàn không vượt quá sức chứa của khách sạn ( 2N ). Kết quả: Ghi ra file văn bản ROOMS.OUT N dòng: Dòng thứ i chứa số lượng khách của phòng i ( 1 i N ).Ví dụ: ROOMS.INP ROOMS.OUT 10 5 2 3 1 4 2 2 2 2 2 1 2 1 0 0 0 Đáp án câu 3 (cau3.pas) Program room; var a,b:array [1 1000] of integer;
  6. i,k,m,n,p,q:integer; f:Text; Procedure doc; begin Assign(f,'room.inp'); Reset(f); Readln(f,n,m); For i:=1 to m do Readln(f,a[i]); Close(f); end; Procedure tinh; begin For i:=1 to m do begin p:=a[i];k:=0; Repeat k:=k+1; if b[k]=0 then if p>1 then begin b[k]:=2;p:=p-2;end else begin b[k]:=1;p:=0;end; Until (k>=n) or (p=0); if p>0 then begin k:=0; Repeat k:=k+1; if b[k]=1 then begin b[k]:=2;p:=p-1;end; Until (k>=n) or (p=0); end; end; end; Procedure ghi; begin Assign(f,'room.out'); Rewrite(f); For i:=1 to n do Writeln(f,b[i]); Close(f); end; Begin doc; tinh; ghi; End.