Lập trình pascal

Hướng dẫn giải đề thi Olympic tin học khối 8, 9 Hiệp Hòa – Bắc Giang – Năm 2014- 2015

Sau đây là hướng dẫn giải đề thi Olympic tin học khối 8, 9 Hiệp Hòa – Bắc Giang – Năm 2014- 2015. Đề thi gồm hai phần đó là phần lập trình pascal và bảng tính Excel.

Có thể bạn quan tâm:

Đề thi Olympic tin học khối 8, 9 Hiệp Hòa – Bắc Giang – Năm 2014- 2015

Yêu cầu chung: Tạo thư mục SBD_… trên ổ đĩa D và lưu các bài làm vào thư mục này. Ví dụ số báo danh của em là Ti912 thì tạo thư mục là SBD_Ti912

Sử dụng ngôn ngữ lập trình Turbo Pascal hoặc Free Pascal viết chương trình giải các bài toán sau:

Bài 1 ( 15 điểm): Lưu với tên là Bai1.pas

Viết chương trình nhập vào một số tự nhiên n từ bàn phím sao cho n < 4 < 1 000 000 và tính tổng Sn với [latex]{S_n} = \frac{{1.2}}{{3.4}} + \frac{{2.3}}{{4.5}} + \frac{{3.4}}{{5.6}} + … + \frac{{n.(n + 1)}}{{(n + 2)(n + 3)}}[/latex]

Bài 2 ( 15 điểm): Lưu với tên là Bai2.pas

Cho 2 số tự nhiên a, b (3 < a < b < 109)

Yêu cầu:

Kiểm tra xem có bao nhiêu số nguyên tố nằm giữa 2 số tự nhiên ab.

– Tìm tổng bình phương của các số nguyên tố giữa ab  sau đó tính tích của hai chữ số tận cùng của tổng vừa tìm được với số 28012016.

Dữ liệu vào:  Hai số tự nhiên ab thỏa mãn a < b được nhập từ bàn phím.

Dữ liệu ra: Ghi ra màn hình các thông tin sau:

– Nếu có số nguyên tố giữa a và b thì ghi kết quả như sau:

+ Dòng 1 ghi ra hai số: Số thứ nhất là số các số nguyên tố giữa hai số ab; số thứ hai là tổng bình phương các số nguyên tố nằm giữa ab; mỗi số cách nhau ít nhất một khoảng trắng.

+ Dòng 2 ghi ra tích của hai chữ số tận cùng của tổng vừa tìm được với số 28012016

– Nếu không có số nguyên tố nào thì ghi ra thông báo: “Không”.

Bài 3 (20 điểm): Lưu với tên là Bai3.pas

Số siêu nguyên tố là số nguyên tố mà khi bỏ một số tuỳ ý các chữ số bên phải của nó thì phần còn lại vẫn tạo thành một số nguyên tố. Ví dụ 7331 là một số siêu nguyên tố có 4 chữ số vì  733, 73, 7 cũng là các số nguyên tố.

Viết chương trình nhập dữ liệu vào là một số nguyên N (0< N <10) và đưa ra kết quả là một số siêu nguyên tố có N chữ số cùng số lượng của chúng.

Ví dụ khi chạy chương trình:

Nhap so N:    4

Cac so sieu nguyen to có 4 chu so la:       2333   2339   2393   2399   2939   3119   3137   3733   3739            3793   3797   5939   7193   7331   7333   7393

Tat ca co 16 so_

Bài 4 ( 20 điểm): Lưu với tên là Bai4.xls

            Tạo trang tính theo mẫu và dùng công thức điền giá trị vào các ô theo yêu cầu dưới đây:

  1. Căn cứ vào bảng 1 và bảng 2, điền tên và mã phòng ban của nhân viên vào bảng 3.
  2. Ở bảng 3: Tính tiền lương của nhân viên, biết rằng lương = hệ số * ngày công * 6500 đồng
  3. Ở bảng 3: Tính tiền thưởng của nhân viên, biết những ai đi làm 25 ngày/ tháng trở lên sẽ được thưởng 10% lương;
  4. Ở bảng 3: Tính phụ cấp, biết ban giám đốc hưởng 30% lương, phòng kế hoạch hưởng 20% lương, các phòng ban khác hưởng 10% lương
  5. Tính tổng cộng
  6. Hoàn tất bảng 4

—————Hết—————-

HƯỚNG DẪN GIẢI

Bài 1:

Uses Crt;
Var
	n,i:Integer;	
	s:Real;
BEGIN
	ClrScr;
           	Write('Nhap so tu nhien n=');Readln(n);
   	While  (n<=5) OR (n>100) do
     		Begin
           			Write('Nhap lai n thoa man 5 < n <=100, n =  ');Readln(n);
     		end;
         	 s:=0;
          	For i:=1 to n do s:=s+i*(i+1)/((i+2)*(i+3));
	Writeln('S= ', S:0:2);
	readln;
end.

Bài 2:

uses crt;
var a,b,r,d,m,n,BC:longint;
    i,j,dem:integer;
    kt:boolean; S:INT64;
begin
readln(a,b);
clrscr;
m:=a;n:=b;dem:=0; S:=0;
 while b<>0 do
  begin
   r:=a mod b;
   a:=b;
   b:=r;
  end;
 d:=a;
 for i:= m+1 to n-1 do
 begin
  if i>1 then kt:=true else kt:=false;
  if i> 2 then for j:=2 to Trunc(sqrt(i)) do
   if (i mod j =0)
   then   kt:=false;
      if kt
      then
      begin
          S:=S+sqr(i);
          dem:=dem+1;
      end;
 end;
  if s= 0 then writeln('khong')
  else
   begin
     writeln(dem,'  ', S);
     writeln((s mod 100)*30102014);
   end;
  writeln(m,'/',n,'=',(m div d),'/',(n div d));
 readln;
end.

Bài 3:

Program Bai3;
{SuperPrime};
var a,b: array [1..100] of longint;
      N,i,k,ka,kb,cs: byte;
Function Prime(N: longint): boolean;
Var i: longint;
Begin
   If (N=0) or (N=1) then
      Prime:=false 
   Else
      Begin
         i:=2;
         While (N mod i <> 0) and (i <= Sqrt(N)) do Inc(i);
         If i > Sqrt(N) then
               Prime:=true   Else Prime:=false;
       End;
End;
BEGIN
    Write ('Nhap N: ');
    Readln (N);
    ka:=1;  a[ka]:=0;
    For i:=1 to N do
         Begin
            Kb:=0;
            For k:=1 to ka do
               For cs:=0 to 9 do
                  If Prime(a[k]*10+cs) then
                      Begin
                         Inc(kb);
                         b[kb]:=a[k]*10+cs;
                      end;
           ka:=kb;
           For k:=1 to ka do
              a[k]:=b[k]; end;
           For k:=1 to ka do
             Write(a[k]:10);
             Writeln;
    Writeln('Co tat ca',ka,'so sieu nguyen to co',N,'chu so.');
    Readln;
END.

 

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

Back to top button