Đề thi HSG Tin 9 Huyện Châu Thành – Năm học 1819 – Có code mẫu
Đề thi HSG Tin 9 Huyện Châu Thành – Năm học 1819
Tên bài | Tên tệp chương trình | Dữ liệu vào | Kết quả ra | |
Bài 1 | Tính căn | SBD_BAI1.PAS | Từ bàn phím | Màn hình |
Bài 2 | Dãy số k | SBD_BAI2.PAS | daysok.inp | daysok.out |
Bài 3 | Tên thiêng | SBD_BAI3.PAS | tenthieng.inp | Tenthieng.out |
Ví dụ thí sinh có SBD:012; làm Bài 1 thì lưu lại ở ổ đĩa D:\ với tên: 012_BAI1.PAS |
Bài 1: Tính căn (6 điểm)
Viết chương trình cho phép nhập vào từ bàn phím hai số số nguyên dương x, n (1<= x, n <=100)
Xuất ra màn hình kết quả của biểu thức [latex] \sqrt {x + \sqrt {x + \sqrt {x + … + \sqrt x } } } [/latex] (n dấu căn, n=4)
Ví dụ:
x | n | Biểu thức |
? | 3 | [latex] \sqrt {x + \sqrt {x + \sqrt x } } [/latex] |
? | 5 | [latex] \sqrt {x + \sqrt {x + \sqrt {x + … + \sqrt x } } } [/latex] |
Bài 2:Dãy số k (8 điểm)
Cho dãy số A có N (N ≤ 100) số tự nhiên (A[i] ≤ 100 (1 ≤ I ≤ N), mỗi số cách nhau đúng 01 dấu cách) và số tự nhiên K (K ≤ N ≤ 100). Hãy viết chương trình ghi ra các phần tử trong dãy A có số lần xuất hiện từ K lần trở lên theo thứ tự tăng dần, nếu không có thì ghi chữ “NO”.
– Dữ liệu vào: từ file văn bản daysok.inp gồm 2 dòng: dòng 1 ghi 2 số N và K cách nhau bởi 01 dấu cách; dòng 2 là dãy A (các số cách nhau đúng 01 dấu cách).
– Dữ liệu ra: file văn bản daysok.out chỉ một dòng duy nhất chứa kết quả (mỗi số cách nhau đúng 01 dấu cách). Xem ví dụ bên dưới.
daysok.inp |
10 2
1 2 1 1 5 5 20 20 5 5 |
5 2
0 1 2 3 4 |
daysok.out |
1 5 20
|
NO
|
Bài 3. Tên thiêng(6 điểm)
Thời xa xưa, ở một bộ tộc cổ đại giữ tập tục đặt tên cho những đứa trẻ mới sinh ra theo tên Thiêng của gia đình với hy vọng chúng được thần linh phù hộ, hạnh phúc, khỏe mạnh và có thể chóng lại các thế lực đen tối, ma quỹ xung quanh. Mỗi gia đình có một tên Thiêng riêng do Tộc trưởng đặt cho và từ tên Thiêng đó mà đặt tên cho các thành viên khác trong gia đình theo cách như sau:
– Tên các thành viên trong gia đình phải là một xâu con gồm một hay nhiều ký tự liên tiếp nhau của tên Thiêng.(tên của các thành viên không được trùng nhau và không trùng với tên thiêng).
Ví dụ: tên Thiêng là: “alubala” thì các tên có thể đặt là “a”, “alu”, “luba”, “bala”, “ala”……(các tên không được phép đặt là “aba”, “ula”, “lula”….)
Yêu cầu: Tộc trưởng muốn biết dựa vào số tên có thể đặt, mỗi gia đình có thể đặt được tối đa bao nhiêu tên.
– Dữ liệu vào: File văn bản tenthieng.inp gồm một dòng chứa tên thiêng, trong đó chỉ chứa chữ cái Latinh thường, có độ dài không quá 255 ký tự.
– Dữ liệu ra: File văn bản tenthieng.out chứa một số nguyên là số lượng các tên có thể đặt khác nhau.
Ví dụ:
tenthieng.inp | tenthieng.out |
alubala | 23 |
Code tham khảo
Bài 1
program can; uses crt; var x,n,i:byte; s:real; begin write('Nhap x: '); readln(x); write('Nhap n: '); readln(n); s:=0; for i:=1 to n do s:=sqrt(x+s); write('bieu thuc co gia tri la:',s:2:4); readln end.
Bài 2
Program DaySoK; Uses crt; Var A, B:Array[0..100] of Integer; n,i,j,k:integer; f:text; procedure Nhap; begin assign(f,'d:\daysok.inp.txt'); reset(f); i:=0; Fillchar(A,SizeOf(A),0); read(f,n); readln(f,k); while not eof(f) do begin read(f, A[i] ); inc(i); end; close(f); end; Procedure XuLy; begin assign(f,'d:\daysok.out.txt'); rewrite(f); FillChar(B, SizeOf(B),0); j:=0; For i:= 1 to n do inc(B[A[i] ]); For i:= 1 to 100 do if((B[i] <> 0) and (B[i] >= k)) then begin write(f, i, ' '); inc(j); end; if j=0 then write(f, 'NO'); close(f); end; BEGIN Nhap; XuLy; END.
Bài 3
Program TenThieng; Uses crt; const fi = 'D:\tenthieng.inp.txt'; fo = 'D:\tenthieng.out.txt'; var fin, fout: text; s, s1, s2: string; l,i,j:word; k: longint; Procedure Dem; var m: byte; begin k:=0; for m:= 1 to l do begin s1:=s; while s1<>'' do begin if m>length(s1) then break; s2:=copy(s1,1,m); delete(s1,1,1); if pos(s2,s1)=0 then inc(k); end; end; writeln(fout,k-1); end; BEGIN assign(fin,fi); reset(fin); assign(fout,fo); rewrite(fout); while not eof(fin) do begin readln(fin,s); l:=length(s); Dem; end; Close(fin); Close(fout); End.