- Nếu chương trình của học sinh đưa ra kết quả khác với đáp án của giám khảo nhưng vẫn đúng thì giám khảo cho điểm tối đa của bộ test đó.. - Với mỗi câu, giám khảo phải tạo ít nhất một [r]
Trang 1SỞ GD&ĐT QUẢNG BÌNH KỲ THI CHỌN HỌC SINH GIỎI CẤP TỈNH
NĂM HỌC 2017 - 2018 HƯỚNG DẪN CHẤM LỚP 9 - THCS
Môn thi: TIN HỌC
(Khóa thi ngày 22 tháng 03 năm 2018)
Thời gian làm bài: 150 phút (không kể thời gian giao đề)
I- Phương pháp:
- Giám khảo tạo bộ dữ liệu vào, tính toán kết quả Thực hiện chương trình của học sinh và so sánh kết quả
- Giám khảo có thể sử dụng chương trình gợi ý dưới đây để tính toán kết quả của dữ liệu vào
- Chương trình học sinh đúng một bộ test, giám khảo cho 0,5 hoặc 0.25 điểm Như vậy, nếu một câu có 3 điểm thì giám khảo phải tạo 6 bộ test
- Nếu chương trình của học sinh đưa ra kết quả khác với đáp án của giám khảo nhưng vẫn đúng thì giám khảo cho điểm tối đa của bộ test đó
- Với mỗi câu, giám khảo phải tạo ít nhất một bộ test có dữ liệu lớn
II- Chương trình gợi ý:
const fi='countkt.inp';
fo='countkt.out';
var i,j,n,dem:integer;
f:text;
xau:string;
Procedure doc;
begin
assign(f,fi); reset(f);
read(f,xau);
close(f);
end;
Procedure xuly;
begin
assign(f,fo);
rewrite(f);
for i:=1 to length(xau) do
if (xau[i] in ['0' '9']) then
inc(dem);
write(F,dem);
close(f);
end;
BEGIN
DOC;
XULY;
END
Program Tong_nguyen_to;
const fi='SPRIME.inp';
fo='SPRIME.out';
Var i,n:integer;
f,g:text;
Function NT(n:integer):Boolean;
Var ok: Boolean;
i:integer;
Begin
Trang 2ok:=true;
For i:=2 to n-1 do if (n mod i) = 0 then ok:=ok and false;
if n>=2 then NT:=ok else NT:=false;
End;
Begin
Assign(f,fi);
Reset(f);
Read(f,n);
Assign(g,fo);
Rewrite(g);
For i:=2 to n div 2 do if (NT(i) and NT(n-i)) then
Writeln(g,n,' = ',i,' + ',n-i);
Close(f);
Close(g);
End
{$MODE OBJFPC}
{$R+$B-}
const
fi = 'clan.inp';
fo = 'clan.out';
nm = 1000000;
var
a : array[1 nm] of longint;
n : longint;
f : text;
procedure Input;
var i:longint;
begin
assign(f,fi); reset(f);
readln(f,n);
for i:=1 to n do read(f,a[i]);
close(f);
end;
procedure quick_sort(dau,cuoi:longint);
var chot,i,j,tg:longint;
begin
if dau>=cuoi then exit;
i:=dau;
j:=cuoi;
chot:=a[(dau+cuoi) div 2];
repeat
while a[i]<chot do inc(i);
while a[j]>chot do dec(j);
if i<=j then
begin
tg:=a[i]; a[i]:=a[j]; a[j]:=tg; inc(i); dec(j);
end;
until i>j;
quick_sort(dau,j);
quick_sort(i,cuoi);
end;
procedure process;
Trang 3var i,kq,d:longint;
begin
input;
quick_sort(1,n);
kq:=0;
d:=1;
for i:=1 to n do
if a[i]=d then
begin
inc(kq); d:=1;
end
else inc(d);
assign(f,fo); rewrite(f);
writeln(f,kq);
close(f);
end;
BEGIN
PROCESS;
END
Const fi ='number.inp';
fo ='number.out';
cs:array[1 8] of longint = (9, 180, 2700, 36000, 450000, 5400000,
63000000, 720000000);
Var n : longint;
f,g :text;
Function num(n:longint):char;
var k, so, mu : longint;
s : string;
Begin
k:=1; mu:=1;
while (k<9)and(cs[k]<n) do
begin
n:=n-cs[k];
inc(k); mu:=mu*10;
end;
if mu=1 then so:=n div k
else so:=n div k+mu+ord(n mod k>0)-1;
str(so,s);s:=s[k]+s;
num:=s[n mod k+1];
End;
BEGIN
assign(f,fi); reset(f);
assign(g,fo); rewrite(g);
while not seekeof(f) do
begin
readln(f,n);
writeln(g,num(n));
end;
close(f);
close(g);
END