SỞ GD&ĐT VĨNH PHÚC
KÌ THI CHỌN HSG LỚP 12, NĂM HỌC 2016 - 2017
TRƯỜNG THPT NGUYỄN DUY THÌ
MÔN: TIN HỌC – LẦN 1
--------------------------
Thời gian làm bài: 180 phút, không kể thời gian giao đề
--------------------------
Tổng quan: Đề thi gồm 02 trang.
TT
Tên bài
File chương trình
File dữ liệu
File kết quả
Điểm
Bài 1 Số hoàn hảo
HOANHAO.PAS
BAI1.INP
BAI1.OUT
3
Bài 2 Dãy số
DAYSO.PAS
BAI2.INP
BAI2.OUT
3
Bài 3 Đếm từ trong xâu
XAU.PAS
BAI3.INP
BAI3.OUT
4
Bài 1. Số hoàn hảo
Một số tự nhiên N có tổng các ước nhỏ hơn nó bằng chính nó được gọi là số hoàn hảo. Ví dụ: Số 6 là số
hoàn hảo vì: Các ước của 6 là 1, 2, 3 và 6 = 1 + 2 + 3.
* Dữ liệu:
Vào từ tệp văn bản HOANHAO.INP, gồm 1 dòng ghi số N (2 < N < 1000).
* Kết quả:
Ghi ra tệp văn bản HOANHAO.OUT: là các số hoàn hảo có giá trị < N, mỗi số được viết trên một dòng.
* Ví dụ:
BAI1.INP
BAI1.OUT
BAI1.INP
BAI1.OUT
7
6
30
6
28
Bài 2. Dãy số
* Dữ liệu: Vào từ tệp văn bản SUM.INP, gồm 2 dòng:
•
- Dòng 1: Số N.
•
- Dòng 2: Dãy số a1, a2......., an mỗi số cách nhau một dấu cách.
(0 ≤ ai ≤ 104; i = 1, 2, ..., N)
* Kết quả:
Ghi ra tệp văn bản SUM.OUT, gồm 2 dòng:
•
Dòng 1: Giá trị và vị trí của phần tử lớn nhất trong dãy số (mỗi số cách nhau một dấu cách).
•
Dòng 2: ghi giá trị trung bình cộng của các số có giá trị lẻ ở vị trí chẵn trong dãy.
* Ví dụ:
BAI2.INP
BAI2.OUT
7
40 7
3 2 6 7 23 25 40
16
BÀI 3: Đếm từ trong xâu.
Chuẩn hóa xâu có nghĩa là loại bỏ dấu cách dư thừa trong xâu.
* Dữ liệu:
Vào từ tệp văn bản XAU.INP, gồm 1 dòng: là một xâu S bất kỳ có độ dài không quá 255 kí tự.
* Kết quả:
Ghi ra tệp văn bản XAU.OUT, gồm 3 dòng:
•
Dòng 1: ghi xâu sau khi đã chuyển hết về ký tự in hoa.
•
Dòng 2: ghi độ dài của xâu sau khi chuẩn hóa.
•
Dòng 3: ghi ra số từ có trong xâu.
* Ví dụ:
BAI3.INP
BAI3.OUT
thpt nguyen duy thi
THPT NGUYEN DUY THI
19
4
Đáp án đề thi học sinh giỏi môn Tin học lớp 12
Bài 1
Program hoanhao;
Uses crt;
Var i, n: interger;
f, g: text;
{Xay dung ham tinh tong cac uoc cua so nguyen duong}
function tongus(n : integer): integer;
var i,s : integer;
begin
s := 0;
for i := 1 to n div 2 do
if n mod i = 0 then s := s + i;
tongus := s;
end;
Begin
Assign(f, 'bai1.inp');
Reset (f);
Assign( g, 'bai1.out');
Rewrite(g);
Read(f, n);
{kiem tra va in ra so hoan hao}
For i:=1 to n do
If i = tongus(i) then write(g, i);
Close(f);
Close(g);
Readln
End.
Bài 2
Program dayso;
Uses crt;
Var i, n, , tong, dem, tb, max: interger;
A: array[1..10000] of longint;
F, g: text;
Begin
Assign(f, 'bai2.inp');
Reset (f);
Assign( g, 'bai2.out');
Rewrite(g);
Read(f, n);
For i:=1 to n do
Begin
Readln(f, a[i]);
End;
{Tim gia tri va vi tri cua phan tu lon nhat}
Max:=a[1];
For i:=1 to n do
If max < a[i] then
begin
max:=a[i];
Write(g, a[i]);
Write(g, i);
end;
{Ghi ra gia tri trung binh cong cua cac so le o vi tri chan trong day}
Dem: =0;
Tong:=0;
For i: 1 to n do
If (a[i] mod 2<> 0) and (i mod 2 = 0) then
Tong: = tong +a[i];
Inc(dem);
Tbc:= tong/dem;
Writeln(g, tbc);
Close(f);
Close(g);
Readln
End.
Bài 3
Program xau;
Uses crt;
Var s: string;
F, g: text;
X, i, dem: integer;
{Ham dem so tu trong xau s}
Function sotu(s : string) : integer;
Var i, dem : integer;
Begin
{ cong them dau cach dau xau de dem tu dau tien}
S: = '' + s;
Dem: = 0 ;
For i:= 2 to x do
If (s[i-1]='') and (s[i]<>'') then inc(dem);
Sotu:= dem;
End;
Begin
Assign(f, 'bai3.inp');
Reset (f);
Assign( g, 'bai3.out');
Rewrite(g);
Read(f, s);
x:= length(s);
{chuyen het xau ve ki tu in hoa}
For i:=1 to x do upcase(s[i]);
Write(g, i);
{chuan hoa xau}
while s[1]=' ' do delete(s,1,1);
while s[x]=' ' do delete(s,x,1);
for i:= x downto 2 do
if (s[i]='') and (s[i-1]='') then delete (s, i, 1);
writeln(g, s);
{ghi ra so tu co trong xau}
Writeln(g, Sotu(s));
Close(f);
Close(g);
Readln
End.