Em hãy viết chương trình tính tổng các phần tử nằm trên đường chéo chính của ma trận... Em hãy tìm dãy số đặc biệt dài nhất bắt đầu từ N[r]
(1)PHỊNG GD&ĐT KRƠNG ANA ĐỀ THI HỌC SINH GIỎI CẤP HUYỆN KHÓA NGÀY 09/02/2015
MÔN: TIN HỌC Thời gian làm bài: 150 phút
ĐÁP ÁN VÀ HƯỚNG DẪN CHẤM Yêu cầu chung:
- Chương trình chạy cho kết đúng (có thể làm theo cách khác đáp án): khai báo đầy đủ, trình bày có cấu trúc rõ ràng cho điểm tối đa Không khai báo biến trừ 0.25 điểm
- Chương trình cho kết sai: Chỉ chấm phần ý của thuật tốn, ý đúng cho điểm khơng vượt q 50% số điểm của câu
Bài 1: (4,0 điểm) Cho toán cổ sau:
Trăm trâu trăm cỏ Trâu đứng ăn năm Trâu nằm ăn ba Lụ khụ trâu già Ba bó
Viết chương trình tính đưa hình số trâu loại
Chương trình tham khảo Điểm
{Goi x = trau dung y = trau nam z = trau gia.} program BAI_1;
uses crt;
var x,y,z: byte;
1.0 Begin
clrscr;
for x:= to 20 {x nhan gia tri tu den 20} for y:=1 to 33 {x nhan gia tri tu den 33} begin
z:= 100 - x - y; if z mod = then
if x*5 + y*3 + z/3 = 100 then begin
writeln('So trau dung: ',x:3); writeln('So trau nam : ',y:3); writeln('So trau gia : ',z:3); end;
end; readln end
1.0
2.0
Kết chương trình
(2)Trâu đứng 12
Trâu nằm 18 11
Trâu già 78 81 84
Bài 2: (5,0 điểm) Tổng đường chéo
Cho ma trận vng NxN (1 < N <= 100) phần tử Em viết chương trình tính tổng phần tử nằm đường chéo của ma trận
Chương trình tham khảo Điểm
Program Bai_2; uses crt;
var Tong_CC,i,j,n:integer;
A:array[1 100,1 100] of integer; 1.0 Begin
Clrscr;
repeat
write('nhap so hang,so cot n:='); readln(n);
until (n > 1) and (N <=100);
1.0
writeln('Nhap gia tri hang, cot'); for i:=1 to n
for j:=1 to n Begin
write('a[',i,',',j,']:= '); readln(a[i,j]); end;
writeln('Mang vua nhap la:'); for i:=1 to n
begin
for j:=1 to n write(a[i,j]:4); writeln;
end;
1.0
0.5
Tong_CC:=0; Begin
for i:=1 to n
for j:=1 to n if i=j then
Tong_CC:=Tong_CC+A[i,j];
Writeln('Tong cac phan tu duong cheo chinh la: ',Tong_CC);
end; Readln; End
1.0
0.5
(3)Tong cac phan tu duong cheo chinh la:
Test 2: N =
12 20 15 Kết Tong_CC: 24 10
4 Test 3: N =
4
6 10 18 Kết Tong_CC: 43 25 30 16 15
11 12 17 18 Test 3: N =
1
6 10 Kết Tong_CC: 28
2 10
Bài 3: (5,0 điểm) Cực tiểu địa phương
Xét dãy số nguyên Aa a1, 2, aN 3N35 Số ai gọi Cực tiểu địa
phương thỏa mãn điều kiện sau:
- i1 a1a2;
- ai ai1 ai ai1,i2,3, ,N1;
- iN aN aN1;
Viết chương trình đếm đưa hình số lượng cực tiểu địa phương vị trí cực tiểu địa phương dãy
Chương trình tham khảo Điểm
uses crt;
var A:Array[1 100]of Integer;
i,n,dem:integer; 0.5
Begin clrscr; Repeat
Write('Nhap N:= '); Readln(n); Until (N>=3) And (N<=35);
1.0
Writeln('Nhap gia tri phan tu cua day:'); For i:=1 to n
begin
Write('a[',i,']= '); readln(a[i]); end;
write('Day vua nhap:');
For i:=1 to n write(a[i]:6);
1.0
write('Vi tri cac so cuc tieu: '); dem:=0;
(4)Begin
dem:=dem +1; write(1); end;
for i:=2 to n -
if (a[i] < a[i-1])and (a[i] < a[i+1]) then begin
dem:=dem+1; write(i:3); end;
if a[n] < a[n-1] then Begin
dem:=dem + 1; write(n:3); end;
write('So luong cuc tieu dia phuong day la:',dem:3);
readln End
1.0
1.0
0.5
Bộ Test thử
Nhập N= Nhập dãy số Kết thông báo
2 Nhap N =
50 Nhap N =
4
Day vua nhap la:
Vi tri cac so cuc tieu day:
So luong cuc tieu dia phuong day la:
Day vua nhap la:
Vi tri cac so cuc tieu day:
So luong cuc tieu dia phuong day la: 10 15 10
16 30
Day vua nhap la: 10 15 10 16 Vi tri cac so cuc tieu day: So luong cuc tieu dia phuong day la: Bài 4: (6,0 điểm) Dãy số đặc biệt
Dãy số A1, A2, , AN gọi dãy số đặc biệt thoả mãn điều kiện:
Là dãy số giảm dần;
Với Ai Ai số nguyên tố ước của số từ A1
đến Ai-1
Em tìm dãy số đặc biệt dài N Yêu cầu:
- Dữ liệu : Nhập từ bàn phím số nguyên dương N (1< N < 100)
- Kết quả: Đưa hình dãy số tìm được, số ghi cách dấu cách
Chương trình tham khảo Điểm
Uses crt;
var i,n,d,k,l,t,tg: integer;
a,b:array[1 100] of integer; 0.5 function nto(x:integer):boolean;
(5)kt:boolean; begin
kt:= true;
if x = then kt:=false else
for j:=2 to x div
if x mod j = then kt:=false; nto:=kt;
end;
0.5
1.0
Begin Clrscr; Repeat
write('Nhap N= '); readln(n);
Until (N > 1)and (N < 100); l:=1;
for i:=1 to n
if (nto(i)=true)or(n mod i =0) then begin
b[l]:=i; l:=l+1; end;
0.5
1.0
for k:=l-1 downto for t:=1 to k-1 if b[t] < b[t+1] then begin
tg:=b[t];
b[t]:=b[t+1]; b[t+1]:=tg; end;
write'Day dac biet la: ');
for d:=1 to l-1 write(b[d]:3); Readln
end
1.0
1.0
0.5
Bộ Test thử
Nhập N= Kết thơng báo hình Day dac biet la:
9 Day dac biet la: 12 Day dac biet la: 12 11 17 Day dac biet la: 17 13 11
20 Day dac biet la: 20 19 17 13 11 10