Tải bản đầy đủ (.docx) (8 trang)

De HSG Tin 1314

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (140.09 KB, 8 trang )

<span class='text_page_counter'>(1)</span>ĐỀ KHẢO SÁT HỌC SINH GIỎI TỈNH MÔN : TIN HỌC Thời gian 150 phút ( Không kể thời gian giao đề ) Ngày thi 28 tháng 02 năm 2014 (HỌC SINH THỰC HÀNH TRÊN MÁY TÍNH Lưu bài làm vào thư mục D:\CHONHSG\ BAI...) PHÒNG GD& ĐT TAM NÔNG. Câu 1:(4đ) Một số n gọi là số phản nguyên tố nếu số ước số của nó là nhiều nhất trong n số tự nhiên đầu tiên. Cho số K (K <= 2 tỷ). Hãy ghi ra số phản nguyên tố lớn nhất nhỏ hơn hoặc bằng K. Câu 2:(6đ) Giai thừa của một số được cho bởi công thức sau: n!=1*2*…*n. Cho số N (N<=2.109) nguyên dương. a) VCT tính tổng giai thừa các chữ số của N. b) Tính số chữ số 0 tận cùng của N!=1*2*….*N, kết quả đưa ra màn hình gồm một số là số chữ số 0 tận cùng của N! tìm được. Câu 3:(6đ) Cho mảng A các số nguyên gồm n phần tử. Viết chương trình thực hiện các công việc sau: a) Nhập một số tự nhiên K. Hãy xuất ra các phần tử có số lần xuất hiện trong dãy A từ K lần trở lên ( Mỗi số chỉ xuất 1 lần). b) Đếm và tính tổng các phần tử khác nhau trong dãy. c) Tìm trong dãy (an) 1 dãy con có tổng nhỏ nhất chia hết cho 3. Câu 4:(4đ) Một chuỗi kí tự thuần nhất được định nghĩa là chuổi chỉ bao gồm các kí tự ‘A’.. ‘Z’ hoặc ‘a’.. ‘z’. Một xâu thuần nhất có thể được viết thu gọn, bao gồm các ký tự kèm theo số lần xuất hiện liên tiếp của ký tự đó. Viết chương trình nhập 1 chuỗi không quá 255 ký tự từ bàn phím là dạng thuần nhất hay dạng thu gọn. - Nếu là chuỗi thuần nhất thì hãy chuyển đổi nó về dạng thu gọn. - Nếu là chuỗi thuộc dạng thu gọn thì hãy chuyển đổi nó trở lại dạng thuần nhất tương ứng. Ví dụ: Chuỗi thuần nhất: AABBCDDEEF -> Chuỗi thu gọn: 2A2BC2D2EF Chuỗi thu gọn: A5B3D2E Chuỗi thuần nhất: ABBBBBDDDEE. HẾT Chú ý : Học sinh không được sữ dụng tài liệu.

<span class='text_page_counter'>(2)</span> ĐÁP ÁN Program Bai2;(3đ) a) program tonggiai; uses crt;. var SUM:longint;x,n,t:integer; function GT(n:integer):Longint; var i:integer;T:longint; begin if n=0 then T:=1 else begin T:=1; for i:=1 to n do T:=T*i; end; GT:=T; end; begin clrscr; write('Nhap n='); readln(N); sum:=0; t:=n; while n>0 do begin x:=n mod 10; SUM:=SUM+GT(x); n:=n div 10; end; write('Giai thua cua ',t,'=',sum); readln end. b) program tonggiai; uses crt; var SUM:longint;t,i,n:integer; s:string; function GT(n:integer):Longint; var i:integer;T:longint; begin if n=0 then T:=1 else begin T:=1; for i:=1 to n do T:=T*i; end;.

<span class='text_page_counter'>(3)</span> GT:=T; end; begin write('Nhap n='); readln(N); SUM:=GT(n); t:=0; str(SUM,s); {Hàm str(SUM,s) đổi số SUM thành xâu S để đếm số 0 ở cuối xâu} i:=length(s); while s[i]='0' do begin inc(t); dec(i); end; writeln('Cho so o tan cung cua ',N,'=',t); readln end..

<span class='text_page_counter'>(4)</span> Progaram bai3;(3đ) es crt; var a,b:array[0..100] of integer; n,j,i,k:integer; f:text; Procedure docf; begin assign(f,'C:\DAYSO.INP'); reset(f); i:=0; read(f,n); readln(f,k); While not eof(f) do begin inc(i); read(f,a[i]); end; close(f); end; Procedure xuly; begin assign(f,'C:\DAYSO.OUT'); rewrite(f); FillChar(b,SizeOf(b),0); For i:=1 to n do inc(b[a[i]]); For i:=1 to n do if b[i]<>0 then if b[i]>=k then writeln(f,i,' Xuat hien ',b[i], ' lan!');. close(f); end; BEGIN clrscr; docf; xuly; readln end.. Progam Bai4;(4đ) program Nen_giainen_chuoi; var s:string; i,k:integer; function Nen(s:string):string; var i,j,d:integer; c:string; begin for i:=1 to length(s)-1 do if s[i]=s[i+1] then begin d:=2; for j:=i+1 to length(s) do if (s[i]=s[j+1]) and (j<length(s)) then d:=d+1 else begin str(d,c); insert(c,s,i); delete(s,i+1,d-1); break; end; end; nen:=s;.

<span class='text_page_counter'>(5)</span> end; function Giainen(s:string):string; var i,j,d,code:integer; c,x:string; begin for i:=1 to length(s) do if s[i] in ['0'..'9'] then c:=c+s[i] else begin val(c,d,code); for j:=1 to d do x:=x+s[i]; c:=''; d:=0; end; giainen:=x; end; begin readln(s); for i:=1 to length(s) do if s[i] in ['0'..'9'] then begin k:=1; break; end; if k=1 then writeln(giainen(s)) else writeln(nen(s)); readln end..

<span class='text_page_counter'>(6)</span> Nguyen Thu Huong - NQB Bài 1: Uses crt; var m,i,c,tam,k:integer; function demuoc(var n:integer):integer; var c,i:integer; begin c:=0; for i:=1 to n do if n mod i =0 then c:=c+1; demuoc:=c; end; begin clrscr; write(‘Nhap k:’);readln(k); m:=0; for i:=1 to k do if demuoc(i)> m then begin m:=demuoc(i); tam:=i; end; write('so phan nguyen to lon nhat <= ‘,k,’ la: ',tam); readln; end. Uses crt; var m,i,c,tam,k:integer; function demuoc(var n:integer):integer; var c,i:integer; begin c:=0; for i:=1 to n do if n mod i =0 then c:=c+1; demuoc:=c; end; begin clrscr; write('Nhap k:');readln(k); m:=0; for i:=1 to k do if demuoc(i)> m then begin m:=demuoc(i); tam:=i; end; write('so phan nguyen to lon nhat <= ',k,' la: ',tam); readln; end. Bài 4: uses crt; var s,ss,st,si:string; i,j,l:integer; function kttn(s:string):boolean; var x:char; ok:boolean; begin kttn:=true; for i:=1 to length(s) do s[i]:=upcase(s[i]); for i:=1 to length(s) do begin ok:=false; for x:='A' to 'Z' do if s[i]=x then ok:=true; if not ok then begin kttn:=false;break;end; end;.

<span class='text_page_counter'>(7)</span> end; procedure nen(s:string;var st:string); begin ss:=''; while s<>'' do begin i:=1; while (s[i+1]=s[1])and(i<length(s)) do inc(i); if i>1 then begin str(i,si); ss:=ss+s[1]+si; end else ss:=ss+s[1]; delete(s,1,i); end; s:=ss;l:=2; while l<length(s) do begin i:=1; while i<=length(s)-l do begin si:=copy(s,i,l); j:=i+l; ss:=copy(s,j,l); while ss=si do begin j:=j+l; ss:=copy(s,j,l); end; if j=i+l then inc(i) else begin str((j-i)div l,ss); delete(s,i,j-i); si:='('+si+')'+ss; insert(si,s,i); i:=i+l+2+length(ss); end; end; inc(l); end; st:=s; end; function ktcd(st:string):boolean; begin ktcd:=false; for i:=1 to length(st) do if st[i]='(' then begin ktcd:=true; break; end; end; procedure giainen(st:string;var s:string); var d,c:byte; code:integer; begin while ktcd(st) do begin i:=1; c:=0; while st[i]<>'(' do inc(i); d:=1; j:=i+1; while c<d do begin inc(j); if st[j]='(' then inc(d); if st[j]=')' then inc(c); end; si:=copy(st,i,j-i+1);.

<span class='text_page_counter'>(8)</span> delete(st,i,j-i+1); delete(si,1,1); delete(si,length(si),1); j:=i; while st[j+1] in['0'..'9'] do inc(j); ss:=copy(st,i,j-i+1); delete(st,i,j-i+1); val(ss,l,code); for j:=1 to l do insert(si,st,i); end; i:=1; while i<=length(st) do begin inc(i); if st[i] in['0'..'9'] then begin j:=i; while st[j+1] in['0'..'9'] do inc(j); ss:=copy(st,i,j-i+1); delete(st,i,j-i+1); val(ss,l,code); ss:=st[i-1]; for j:=1 to l-1 do insert(ss,st,i); i:=i+l-1; end; end; s:=st; end; begin clrscr; write('nhap chuoi: ');readln(s); if kttn(s) then begin nen(s,st); writeln('Chuoi sau khi nen la: ',st); giainen(st,s); writeln('Chuoi sau khi giai nen la: ',s); end else write('Xau ko thuan nhat.'); readln; end..

<span class='text_page_counter'>(9)</span>

Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay
×