phòng gd vĩnh tờng đề khảo sát đội tuyển hsg Môn : tin học Năm học 2006-2007 Thời gian làm bài: 150 phút không kể giao đề Đề bài Bài 1: Tên file đợc đặt là BL1.PAS 2,5 điểm Tại vơng quốc
Trang 1phòng gd vĩnh tờng đề khảo sát đội tuyển hsg
Môn : tin học Năm học 2006-2007
(Thời gian làm bài: 150 phút không kể giao đề)
Đề bài Bài 1: Tên file đợc đặt là BL1.PAS (2,5 điểm)
Tại vơng quốc Ba T xa xa, ngời ta tổ chức các cuộc thi tìm dãy số hạnh phúc : các chàng trai cô gái thông minh trong thời gian ngắn nhất phải tìm ra đợc một dãy số hạnh phúc có nhiều phần tử nhất Dãy số tự nhiên a1, a2, , ak đợc gọi là hạnh phúc nếu nó thoả mãn các điều kện sau :
- Dãy trên là dãy giảm dần
- Với mọi i (1<i<=k) ai hoặc là số nguyên tố, hoặc phải là ớc của một trong các số a1, a2, , ai-1 .
Em hãy viết chơng trình giúp các chàng trai cô gái Ba T để : Nhập vào một số N từ bàn phím và in ra màn hình một dãy số hạnh phúc dài nhất với số hạng đầu tiờn là N
Ví dụ :
8 DAY THOA MAN: 8 7 5 4 3 2 1
Bài 2: Tên file đợc đặt là BL2.PAS (2,5 điểm)
Cho số tự nhiên N và dãy số Fibonaci 1, 1, 2 , 3, 5, 8,
Hãy viết chơng trình kiểm tra xem N có thể phân tích đợc thành tổng của các số Fibonaci khác nhau hay không (tổng có ít nhất 2 số hạng ) thông báo ra màn hình cách biểu diễn đó, nếu không có cũng thông báo: KHONG TH E PHAN TICH.
Bài 3: Tên file đợc đặt là BL3.PAS (2,5 điểm)
Một số n đợc gọi là số phản nguyên tố nếu ớc số của nó là nhiều nhất trong n số tự nhiên đầu tiên
Cho số K (K<=10000) Hãy tìm tất cả các số phản nguyên tố nhỏ hơn hoặc bằng K.
Ví dụ :
Bài 4: Tên file đợc đặt là BL4.PAS (2,5 điểm)
Trên đờng thẳng cho trớc ngời ta đánh dấu n điểm khác nhau : A1, A2, , An (n>=4 ), mỗi điểm
đợc đánh dấu bằng một trong bốn màu: xanh, đỏ, tím, vàng Mỗi màu đợc sử dụng ít nhất một lần trong quá trình đánh dấu
Lập chơng trình thực hiện các công việc sau :
a) Nhập thông tin về vị trí các điểm màu dùng để đánh dấu các điểm tơng ứng đó từ bàn phím (xanh : X , đỏ : D , tím : T , vàng : V ).
b) Chỉ ra một đoạn thẳng dài nhất trong đó thoả mãn: Có đúng hai màu, mỗi màu xuất hiện đúng một lần và hai màu còn lại, mỗi màu xuất hiện ít nhất một lần (nếu có nhiều đoạn thoả mãn thì đọc ra tất cả các đoạn thẳng đó mỗi đoạn trên một dòng)
Ví dụ :
10 T V V D T V D X T V DOAN THOA MAN DAI NHAT LA:
V V D T V D X
H ớng dẫn chấm tin 9
Trang 2Câu 1: (2,5 điểm ) mỗi TEST cho 0,5 điểm
TEST Nhập N Đọc ra màn hình
1 1 DAY THOA MAN: 1
2 2 DAY THOA MAN: 2 1
3 8 DAY THOA MAN: 8 7 5 4 3 2 1
4 15 DAY THOA MAN: 15 13 11 7 5 3 2 1
5 20 DAY THOA MAN: 20 19 17 13 11 10 7 5 4 3 2 1
Câu 2 :(2,5 điểm ) TEST 1 Và 2 cho 0,25 điểm mỗi TEST còn lại cho 0,5 điểm (chú ý nếu
tổng khác đáp án nhng vẫn thoả mãn thì vẫn cho điểm tối đa VD: n=13 có thể là: 8+3+2 )
Câu 3(2,5 điểm ) mỗi TEST cho 0,5 điểm
Câu 4 (2,5 điểm ) mỗi TEST cho 0,5 điểm
1 XDTV DOAN THOA MAN DAI NHAT LA: XDTV
2 DXTVVVDXTT DOAN THOA MAN DAI NHAT LA: TVVVDXTT
3 DDDXXXTTTVVV DOAN THOA MAN DAI NHAT LA: DXXXTTTV
4 XDTTTTTVXDT DOAN THOA MAN DAI NHAT LA: DTTTTTVXDT
5 XDTVXDTV DOAN THOA MAN DAI NHAT LA: XDTVXD
DTVXDT TVXDTV
………Hết………
Bài1:
{Day so hanh phuc}
uses crt;
var a: array[1 1000]of integer;
i,j,k,n,d:integer;
kt:boolean;
Trang 3function nt(n:longint):boolean;
var i:longint;
begin
if n<2 then nt:=false
else begin
i:=2;
while (i<=sqrt(n)) and (n mod i<>0) do inc(i);
nt:=(i>sqrt(n));
end;
end;
BEGIN
clrscr;
write('vao n=');readln(n);
if n=2 then write(n,' ',1)
else
begin
d:=1; a[1]:=n;
for i:= n-1 downto 1 do
begin
if(nt(i)) then begin inc(d);a[d]:=i;a[d]:=i;end
else
begin
kt:=false;
for j:=1 to d-1 do
if a[j] mod i=0 then kt:=true;
if kt then begin
inc(d);
a[d]:=i;
end;
end;
end;
for i:=1 to d do write(a[i],' ');
end;
readln;
END
Bµi 2:
uses crt;
var a:array[1 1000]of longint;
k,i,n,m,h:longint;
function fbnx(k:longint):boolean;
var i:longint;
f:array[1 100]of longint;
begin
f[1]:=1;
f[2]:=1;
i:=3;
repeat
f[i]:=f[i-1]+f[i-2];
inc(i);
until f[i-1]>=k;
fbnx:=(f[i-1]=k);
end;
BEGIN
clrscr;
write('Nhap n=');readln(n);
if (n=0) or(n=1) then begin write('KHONG THE PHAN TICH.');readln;exit;end;
if (n=2) then begin write('KHONG THE PHAN TICH.');readln;exit;end;
m:=n;
k:=0;
if not fbnx(n) then
begin
repeat
for i:=n downto 1 do
if fbnx(i) then begin inc(k);a[k]:=i;n:=n-i;break;end;
Trang 4until (n=0)or (n=1);
write('',m,'=');
if n=0 then
begin
for i:=1 to k-1 do write('',a[i],'+');
write(a[k]);
end;
if n=1 then
begin
for i:=1 to k-1 do write('',a[i],'+');
write('',a[k],'+1');
end;
end
else
begin
write('',n,'=');
h:=0;
for i:=n-1 downto 1 do
if fbnx(i) then begin h:=i;write('',i,'+');break;end; write(n-h);
end;
readln
end
Bµi 4:
USES CRT;
var n,k,i,j,c,d1,h,max:integer;
d,dau,cuoi:array[1 255] of integer;
MAU: string;
BEGIN
CLRSCR;
write('VAO DAY MAU LA CAC KI TU IN HOA: ');readln(MAU);
WRITELN(************************);
i:=1;
repeat
j:=4;
repeat
for k:=1 to 4 do d[k]:=0;
for k:=i to j do
begin
if (MAU[k]='X') then inc(d[1]);
if (MAU[k]='D') then inc(d[2]);
if (MAU[k]='T') then inc(d[3]);
if (MAU[k]='V') then inc(d[4]);
end;
if((d[1]=1)and(d[2]=1)and(d[4]<>0)and(d[3]<>0))
or ((d[1]=1)and(d[3]=1)and(d[2]<>0)and(d[4]<>0))
or ((d[1]=1)and(d[4]=1)and(d[2]<>0)and(d[3]<>0)) or((d[3]=1)and(d[2]=1)and(d[1]<>0)and(d[4]<>0)) or((d[4]=1)and(d[2]=1)and(d[1]<>0)and(d[3]<>0)) or((d[3]=1)and(d[4]=1)and(d[2]<>0)and(d[1]<>0)) then
begin
inc(h);
if j-i+1 >max then max:=j-i+1;
dau[h]:=i;cuoi[h]:=j;
end;
inc(j);
until j>length(MAU);
inc(i);
until i>length(MAU);
if h>0 then
begin
write(' DOAN MAU THOA MAN LA :');
for i:=dau[1] to cuoi[1] do write(MAU[i]);writeln;
for i:=1 to h do
begin
if cuoi[i]-dau[i]+1=max then
Trang 5begin
write(' DOAN MAU DAI NHAT THOA MAN LA :');
for j:=dau[i] to cuoi[i] do write(MAU[j]);writeln; end;
end;
end
else writeln('KHONG CO DOAN MAU NAO THOA MAN');
readln
……….