Đăng ký Đăng nhập
Trang chủ Giáo dục - Đào tạo Tin học đề thi học sinh giỏi môn tin học...

Tài liệu đề thi học sinh giỏi môn tin học

.DOC
11
653
128

Mô tả:

đề thi học sinh giỏi môn tin học
ĐỀ THI TIN HỌC Bài 1: Tên file được đặt là BL1.PAS (2,5 điểm) Tại vương quốc Ba Tư xa xưa, 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=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ụ : Nhập Dãy A Đọc ra màn hình N 10 TV V D T V D X T V DOAN THOA MAN DAI NHAT LA: VVDTVDX ĐÁP ÁN Bµi1: {Day so hanh phuc} uses crt; var a: array[1..1000]of integer; i,j,k,n,d:integer; kt:boolean; function 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:=ni;break;end; until (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 begin 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 ………………………………………………………………………………….
- Xem thêm -

Tài liệu liên quan