You are on page 1of 36

MỘT SỐ BÀI TẬP PASCAL DẠNG KHÓ

MẬT KHẨU.
Cu Tí thường xuyên tham gia thi lập trình trên mạng. Vì đạt được thành tích cao nên Tí được gửi tặng
một phần mềm diệt virus. Nhà sản xuất phần mềm cung cấp cho Tí một mã số là một dãy gồm các bộ ba chữ
số ngăn cách nhau bởi dấu chấm và có chiều dài không quá 255 (kể cả chữ số và dấu chấm). Để cài đặt được
phần mềm, Tí phải nhập vào mật khẩu của phần mềm. Mật khẩu là một số nguyên dương M được tạo ra bằng
cách tính tổng giá trị các bộ ba chữ số trong dãy mã số, các bộ ba này được đọc từ phải sang trái.

- Yêu cầu: Cho biết mã số của phần mềm, hãy tìm mật khẩu của phần mềm đó.

- Dữ liệu vào: Cho từ tệp văn bản có tên BL2.INPgồm một dòng chứa xâu ký tự S (độ dài xâu không
quá 255 ký tự) là mã số của phần mềm.

- Kết quả: Ghi ra tệp văn bản có tên BL2.OUTgồm một số nguyên là mật khẩu tìm
được.

Chương trình tham khảo:

ProgramBL2;

Constfin ='BL2.INP';

fout='BL2.OUT';

VarS:String;

i,Sum,T:Longint;

f:Text;

Begin

Assign(f,fin);

Reset(f);

Read(f,S);

Close(f);

Sum:=0;

T:=0;

Fori:=Length(S) downto1 do

IfS[i] in['0'..'9'] thenT:=T*10+(ord(S[i])-48)

Else

Begin

Sum:=Sum+T;

T:=0;

End;

Sum:=Sum+T;
Assign(f,fout);

ReWrite(f);

Write(f,Sum);

Close(f);

End.

TRÒ CHƠI VỚI BĂNG SỐ.


Trên một cuộn giấy dài, người ta lần lượt viết N số nguyên dương, giá trị mỗi

số không vượt quá 10000000.

- Yêu cầu: Hãy cắt cuộn giấy thành nhiều đoạn nhất sao cho tổng các số được viết trong các đoạn là
bằng nhau.

- Dữ liệu vào: Cho từ tệp văn bản có tên BL3.INPcó dạng như sau:

 Dòng đầu tiên ghi số nguyên dương N(1≤N≤10000).

 Dòng thứ hai ghi N số nguyên theo thứ tự là các số được viết trên cuộn giấy, các số nguyên cách
nhau ít nhất một dấu cách.

- Kết quả: Ghi ra tệp văn bản có tên BL3.OUTgồm một dòng ghi một số nguyên là số đoạn nhiều nhất
có thể chia được.

Ví dụ:

BL3.INP BL3.OUT
8 3
10 2 6 2 5 2 1 2

Giải thích:

+ Đoạn 1: 10

+ Đoạn 2: 2 + 6 + 2 =10

+ Đoạn 3: 5 + 2 + 1 + 2 = 10
Chương trình tham khảo:

ProgramBL3;

Constfin ='BL3.INP';

fout='BL3.OUT';

Vara:array[1..1000] ofLongint;

N,K,i,S,tong:Longint;

f:Text;

Begin

Assign(f,fin);

Reset(f);

Readln(f,N);

Fori:=1 toN doRead(f,a[i]);

Close(f);

S:=0;

Fori:=1 toN doS:=S+a[i];

ForK:=N downto1 do

IfS modK=0 then

Begin

tong:=0;

Fori:=1 ton do

Begin

tong:=tong+a[i];

Iftong=S divK thentong:=0;

End;

Iftong=0 thenBreak;

End;

Assign(f,fout);

ReWrite(f);

Write(f,K);

Close(f);

End.
KHOẢNG CÁCH
Trong soạn thảo văn bản, theo quy ước giữa các từ chỉ nên cách nhau bằng một khoảng cách. Tuy
nhiên trên thực tế vẫn có những trường hợp ngoại lệ.

- Yêu cầu: Cho trước một xâu ký tự S chỉ gồm các chữ cái và các khoảng cách. Hãy cho biết có nhiều
nhất bao nhiêu khoảng cách đi liền nhau trong xâu S.

- Dữ liệu vào: Cho từ tệp văn bản có tên BL3.INPgồm một dòng ghi xâu S (độ dài xâu không quá 250
ký tự).

- Ghi ra tệp văn bản có tên BL3.OUTgồm một số nguyên duy nhất là số
Kết quả:
khoảng cách nhiều nhất đi liền nhau.

Chương trình tham kh ảo:

Program BL3;

Const fin ='BL3.INP';

fout='BL3.OUT';

Var S:String;

i,d,max:Integer;

f:Text;

Begin

Assign(f,fin);

Reset(f);

Read(f,S);

Close(f);

max:=0;

d:=0;

S:=S+'a';

For i:=1 to length(S) do

If S[i]=' ' then d:=d+1

Else

Begin

If d>max then max:=d;

d:=0;

End;

Assign(f,fout);
ReWrite(f);

Write(f,max);

Close(f);

End.

DÃY TĂNG
Một dãy số a1, a2, …, anđược gọi là dãy tăng nếu như nó thỏa điều kiện:

a1< a2< … < an

- Yêu cầu: Cho dãy số nguyên a1, a2, …, an. Hãy cho biết dãy số này có phải là dãy tăng hay không?
Nếu không phải dãy tăng thì hãy cho biết chỉ số k nhỏ nhất của phần tử làm cho dãy không có tính chất
của dãy tăng.

- Dữ liệu vào: Cho từ tệp văn bản có tên BL4.INPcó dạng như sau:

 Dòng đầu tiên ghi số nguyên n(1<n≤1000)

 Dòng thứ hai ghi dãy n số nguyên a1, a2, …, an(-1000 ≤ ai≤ 1000, i=1..n)

- Kết quả: Ghi ra tệp văn bản có tên BL4.OUTgồm một số nguyên duy nhất k.

Trường hợp dãy đã cho là dãy tăng thì ghi số 0.

Chương trình tham khảo:

Program BL4;

Const fin ='BL4.INP';

fout='BL4.OUT';

Var A:Array[0..1001] of Longint;

n,i:Longint;

f:Text;

Begin

Assign(f,fin);

Reset(f);

Readln(f,n);

For i:=1 to n do Read(f,a[i]);

Close(f);

i:=1;

While (i<=n-1) and (a[i]<a[i+1]) do i:=i+1;

Assign(f,fout);

ReWrite(f);
If i<=n-1 then Write(f,i+1)

Else Write(f,0);

Close(f);

End.

NHỮNG SỐ NGUYÊN TỐ
Bạn Nam vừa được học về các số nguyên tố và bạn ấy rất thích vì những tính chất đặc biệt của nó. Ngay
cả trong giờ ra chơi, bạn Nam vẫn ở lại lớp và lấy giấy ra để tìm thêm những số nguyên tố mới. Tuy nhiên,
những người bạn tinh nghịch khi thấy Nam tìm ra được một số nguyên tố thì thay đổi số đó bằng cách lấy viết
ghi thêm vào sau số đó một hoặc nhiều chữ số nữa, có lần cũng không viết thêm gì cả.

- Yêu cầu: Hãy cho biết những số nguyên tố nào có thể là số mà bạn Nam

- đã tìm được lúc đầu.

- Dữ liệu vào:Nhập từ bàn phím số nguyên dương n(20≤n≤2*1000000000000) là số sau khi các bạn
của Nam đã thay đổi.

- Kết quả ra:Xuất ra màn hình những số nguyên tố có thể là số mà bạn Nam tìm được lúc đầu.

Ví dụ :

Nhap so nguyen duong n = 30792

Cac so nguyen to:

3079

307

Chương trình tham khảo:

ProgramBL1;

Varn,i:Longint;

Begin

Write('Nhap so nguyen duong n = ');

Readln(n);

Writeln('Cac so nguyen to:');

Whilen>=2 do

Begin

i:=2;

While(i<=sqrt(n)) and(n modi<>0) doi:=i+1;

Ifi>sqrt(n) thenWriteln(n);

n:=n div10;
End;

Readln;

End.

XÂU CON ĐỐI XỨNG


Một xâu ký tự gọi là đối xứng nếu viết các ký tự của xâu theo thứ tự ngược lại thì tạo thành xâu mới giống
như xâu ban đầu.

- Yêu cầu: Cho xâu ký tự S chỉ gồm các chữ cái in thường. Hãy cho biết có bao nhiêu xâu con có nhiều
hơn 1 ký tự của xâu S là đối xứng. Xâu con của xâu S là một dãy ký tự liên tiếp trong xâu S.

- Dữ liệu vào: Cho từ tệp văn bản có tên BL2.INPgồm một dòng chứa xâu ký tự S (độ dài xâu không
quá 250 ký tự).

- Kết quả:Ghi ra tệp văn bản có tên BL2.OUTgồm một số tự nhiên là số xâu con đối
xứng của xâu S.

Chương trình tham khảo:

ProgramBL2;

Constfin ='BL2.INP';

fout='BL2.OUT';

VarS:String;

i,j,k,dem:Longint;

f:Text;

Begin

Assign(f,fin);

Reset(f);

Read(f,S);

Close(f);

dem:=0;

Fori:=1 toLength(S)-1 do

Forj:=i+1 toLength(S) do

Begin

k:=(j-i-1) div2;

While(k>=0) and(S[i+k]=S[j-k]) dok:=k-1;

Ifk<0 thendem:=dem+1;

End;

Assign(f,fout);
ReWrite(f);

Write(f,dem);

Close(f);

End.

XẾP HÀNG HÓA


Tại một bến cảng, các công nhân đang bốc dỡ các kiện hàng từ tàu biển lên các xe container. Các kiện hàng
phải được bốc dỡ lần lượt từ kiện hàng thứ nhất đến kiện hàng cuối cùng. Mỗi kiện hàng khi bốc lên phải được
đặt ngay vào xe container đang chờ sẵn để vận chuyển đi, xe này đầy thì đến lượt xe kế tiếp. Mỗi xe container
chỉ có thể chở hàng hóa có tải trọng không quá M.

Yêu cầu:Hãy cho biết cần ít nhất bao nhiêu chuyến xe để vận chuyển hết

hàng hóa trên tàu.

Dữ liệu vào:Cho từ tệp văn bản có tên BL3.INPcó dạng như sau:

- Dòng đầu tiên ghi hai số nguyên nvà M(1≤n≤10000, 1≤M≤10000000) tương ứng là số kiện hàng trên tàu và
tải trọng tối đa của xe container.

- Dòng thứ hai ghi n số nguyên a1, a2, ..., an(1≤ai≤M) trong đó ai tương ứng là trọng lượng của kiện hàng thứ i
(i=1..n).

Kết quả: Ghi ra tệp văn bản có tên BL3.OUTgồm một dòng ghi một số nguyên là số chuyến xe
ít nhất. Các số trên cùng một dòng ghi cách nhau ít nhất một dấu cách.

Chương trình tham khảo

ProgramBL3;

Constfin ='BL3.INP';

fout='BL3.OUT';

Vara:Array[1..1000] ofLongint;

n,M,i,S,dem:Longint;

f:Text;

Begin

Assign(f,fin);

Reset(f);

Readln(f,n,m);

Fori:=1 ton doRead(f,a[i]);

Close(f);

dem:=1;

S:=0;

Fori:=1 ton do
IfS+a[i]<=M thenS:=S+a[i]

Else

Begin

dem:=dem+1;

S:=a[i];

End;

Assign(f,fout);

ReWrite(f);

Write(f,dem);

Close(f);

End.

BÀI 1.(7 điểm) GIA CÔNG SẢN PHẦM

Một cơ sở sản xuất hàng thủ công mỹ nghệ vừa nhận được một đơn đặt hàng

gia công nsản phẩm. Với số lượng đặt hàng lớn như vậy, cơ sở đã huy động hết

toàn bộ công nhân bắt tay vào làm ngay. Tuy nhiên đây lại là một sản phẩm mới

nên ngày đầu tiên cơ sở chỉ làm ra được ksản phẩm. Sang ngày thứ hai, các

công nhân đã thành thạo hơn nên số sản phẩm làm ra được nhiều gấp đôi ngày

thứ nhất. Và cứ như vậy, năng suất của ngày hôm sau lại cao gấp đôi ngày hôm

trước.

Yêu cầu:Hãy cho biết cơ sở cần bao nhiêu ngày để hoàn thành hết nsản

phẩm?

Dữ liệu vào:Nhập từ bàn phím các số nguyên n, k(1≤n,k≤100000). Giả thiết

dữ liệu được nhập đúng, không cần kiểm tra.

Kết quả ra:Xuất ra màn hình số ngày hoàn thành các sản phẩm theo đơn đặt

hàng.

Ví dụ :

Nhập từ bàn phím Xuất ra màn hình

Số sản phẩm đặt hàng = 11

Số sản phẩm sản xuất trong ngày đầu tiên = 2

Số ngày hoàn thành = 3

Giải thích:

- Ngày thứ nhất làm 2 sản phẩm (còn lại 9 sản phẩm).
- Ngày thứ hai làm 4 sản phẩm (tổng cộng là 6, còn lại 5 sản phẩm).

- Ngày thứ ba có thể làm được 8 sản phẩm nhưng chỉ làm 5 sản phẩm còn lại.

BÀI 2.(6 điểm) DÃY KÝ TỰ SỐ

Bạn Nam rất yêu thích lập trình, nhất là khi gặp những bài toán khó thì bạn ấy

càng cố gắng để giải cho xong. Có một lần, trong lúc suy nghĩ về một bài toán,

tay bạn ấy lại gõ ngẫu nhiên các phím trên bàn phím, đến khi nhìn lại thì trên

màn hình đã là một dãy ký tự. Kỳ lạ thay, mặc dù là gõ ngẫu nhiên không nhìn

bàn phím nhưng có những lúc bạn ấy chỉ toàn gõ vào các phím số.

Yêu cầu:Cho xâu ký tự S là dãy các ký tự mà bạn Nam đã gõ vào, hãy cho

biết bạn Nam đã gõ liên tiếp các phím số nhiều nhất là bao nhiêu lần?

Dữ liệu vào:Cho từ tệp văn bản có tên BL2.INPgồm một dòng chứa xâu ký

tự S (độ dài xâu không quá 250 ký tự).

Kết quả:Ghi ra tệp văn bản có tên BL2.OUTcó dạng:

- Dòng đầu ghi số lần nhiều nhất mà bạn Nam gõ liên tiếp các phím số.

- Nếu có ký tự số được gõ vào thì dòng thứ hai ghi dãy các số mà bạn nam gõ

liên tiếp nhiều nhất đó. Nếu có nhiều dãy cùng có số lần gõ nhiều nhất như nhau

thì in ra dãy đầu tiên.

Ví dụ:

BL2.INP BL2.OUT

azp572gkxt8906dqsh13dj 4

8906

BÀI 3.(7 điểm) CHẠY TIẾP SỨC

Trong kỳ thi hội khỏe phù đổng cấp huyện vừa qua có n vận động viên tham

gia chạy ngắn, các vận động viên được đánh số báo danh từ 1 đến n. Kết quả

thời gian chạy của vận động viên thứ i là ti

(miligiây). Để chuẩn bị cho môn

chạy tiếp sức trong kỳ thi hội khỏe phù đổng cấp tỉnh, ban huấn luyện muốn

chọn ra 4 vận động viên chạy nhanh nhất trong số n vận động viên này.

Yêu cầu:Hãy cho biết số báo danh của 4 vận động viên được chọn. Biết rằng

không có hai vận động viên nào có cùng thành tích.

Dữ liệu vào:Cho từ tệp văn bản có tên BL3.INPcó dạng như sau:

- Dòng đầu tiên ghi số nguyên n(4≤n≤1000)


- n dòng tiếp theo, dòng thứ i ghi số nguyên dương ti

là thời gian chạy của vận

động viên thứ i ( ti

≤ 30000, i=1..n)

Kết quả:Ghi ra tệp văn bản có tên BL3.OUTgồm một dòng ghi 4 số nguyên

tương ứng là 4 số báo danh của 4 vận động viên được chọn (không cần ghi theo

thứ tự).

Các số trên cùng một dòng ghi cách nhau ít nhất một dấu cách.

Ví dụ:

BL3.INP BL3.OUT

13000

9800

10200

11500

10060

12050

11200

2357

--- HẾT ---

Lưu ý: Thí sinh không được sử dụng tài liệu. Giám thị không giải thích gì thêm.

PHÒNG GIÁO DỤC VÀ ĐÀO TẠO

HUYỆN LAI VUNG

Hướng dẫn chấm gồm 03 trang

HƯỚNG DẪN CHẤM VÀ THANG ĐIỂM

KỲ THI CHỌN HỌC SINH GIỎI LỚP 9

NĂM HỌC 2015 – 2016

MÔN: TIN HỌC

BÀI 1.(7 điểm) GIA CÔNG SẢN PHẨM

a. Thuật toán:

Dùng cấu trúc lặp tăng dần để đếm số ngày

b. Chương trình tham khảo:


ProgramBL1;

Varn,k,S,dem:Longint;

Begin

Write('So san pham dat hang = ');

Readln(n);

Write('So san pham san xuat trong ngay dau tien = ');

Readln(k);

S:=0;

dem:=0;

WhileS<n do

Begin

dem:=dem+1;

S:=S+k;

k:=k*2;

End;

Write('So ngay hoan thanh = ',dem);

Readln;

End.

c. Bộ TEST:

TEST Dữ liệu nhập Kết quả Điểm

1 n = 10

k = 20

1 1,0

2 n = 300

k = 299

2 1,0

3 n = 250

k = 250

1 1,0

4 n = 5000

k=1

13 1,0
5 n = 15700

k=5

12 1,0

6 n = 50000

k=2

15 1,0

7 n = 100000

k=3

16 1,0

BÀI 2.(6 điểm) DÃY KÝ TỰ SỐ

a. Thuật toán:

Bài toán thuộc dạng tìm từ dài nhất trong xâu

b. Chương trình tham khảo:

ProgramBL2;

Constfin = 'BL2.INP';

fout= 'BL2.OUT';

VarS:String;

i,max,dem,vitri:Integer;

f:Text;

Begin

Assign(f,fin);

Reset(f);

Read(f,S);

Close(f);

max:=0;

dem:=0;

Fori:=1 toLength(S) do

If(S[i]>='0') and(S[i]<='9') then

Begin

dem:=dem+1;

Ifdem>max then

Begin
max:=dem;

vitri:=i;

End;

End

Elsedem:=0;

Assign(f,fout);

ReWrite(f);

Writeln(f,max);

Write(f,Copy(S,vitri-max+1,max));

Close(f);

End.

c. Bộ TEST:

TEST Dữ liệu nhập Kết quả Điểm

sjdh25jsh00491sadjh2763smdajk 5

00491

0,5

0,5

skldjl;a s';asdl'askasjdfajsj 0 1,0

sjdh;';7634re57834dfg57346gfh738947fkjash

3987ueirtjkdf,./l834782342907jshjlhk

12

834782342907

0,5

0,5

nb3478jdf348jgfh9038fgj348975dkj0-347dfg

83475jkfjk89-\=-aksdjh347jh000000000jksh

000000000
0,5

0,5

07304657018963457627456 23

07304657018963457627456

0,5

0,5

hjhdf346576347895hjfgsdasdjklh8930247508

3740fghjdfhgjkdhfjk5389034750834750-812

ajkgjksdf12389374508723489057346587413

67jhjk32762637ghsdgfsd7826789623457862

3478gsdgfhjsdggduyrtpy76789165789165018

6jhkjlasdggfhjasdgy576157645gfsgdfhlsgadfl

3478gwdhjsdhsa

31

123893745087234890573465874

1367

0,5

0,5

BÀI 3.(7 điểm) CHẠY TIẾP SỨC

a. Thuật toán:

Sắp xếp dãy t theo thứ tự tăng dần và chọn 4 phần tử đầu. Lưu ý khi sắp xếp lưu

lại số báo danh của vận động viên.

b. Chương trình tham khảo:


ProgramBL3;

Constfin = 'BL31.INP';

fout= 'BL31.OUT';

Vart,sbd:Array[1..1000] ofInteger;

n,i,j,tam:Integer;

f:Text;

Begin

Assign(f,fin);

Reset(f);

Readln(f,n);

Fori:=1 ton doReadln(f,t[i]);

Close(f);

Fori:=1 ton dosbd[i]:=i;

Fori:=1 to4 do

Forj:=i+1 ton do

Ift[i]>t[j] then

Begin

tam:=t[i];

t[i]:=t[j];

t[j]:=tam;

tam:=sbd[i];

sbd[i]:=sbd[j];

sbd[j]:=tam;

End;

Assign(f,fout);

ReWrite(f);

Fori:=1 to4 doWrite(f,sbd[i],' ');

Close(f);

End.

c. Bộ TEST:Các dữ liệu nhập xem trong file BL3.INP

TEST File Input BL3.OUT Điểm

1 BL31.INP 7 10 12 14 1,0
2 BL32.INP 16 33 66 97 1,0

3 BL33.INP 67 130 178 195 1,0

4 BL34.INP 262 369 398 524 1,0

5 BL35.INP 15 358 536 598 1,0

6 BL36.INP 116 211 511 736 1,0

7 BL37.INP 83 168 713 937 1,0

---Hết---

BÀI 1.(5,0 điểm) NHỮNG ĐÓA HOA HỒNG

Tôn sư trọng đạo là một truyền thống văn hoá vô cùng tốt đẹp của dân tộc ta.

Để tỏ lòng tri ân đến quý thầy cô nhân ngày nhà giáo Việt Nam, các bạn học sinh lớp

9A dự định sẽ mua những cành hoa hồng đẹp nhất để tặng cho tất cả thầy cô trong

toàn trường. Theo tìm hiểu của bạn lớp trưởng thì nhà trường có nthầy cô giáo, do đó

các bạn cần mua ncành hoa hồng.

Tại cửa hàng bán hoa, giá của mỗi cành hoa hồng là mđồng. Tuy nhiên, cửa

hàng có chính sách giảm giá nếu khách hàng mua từ acành hoa hồng trở lên thì giá

bán sẽ giảm 25%.

Yêu cầu:Hãy tính tổng số tiền mà các bạn lớp 9A cần có để mua đủ số cành

hoa hồng như dự định.

Dữ liệu vào:Nhập từ bàn phím các giá trị n, m, a(n, m, a là các số nguyên,

1≤n≤100, 1000≤m≤10000, 5≤a≤50). Giả thiết dữ liệu được nhập đúng, không cần

kiểm tra.

Kết quả ra:Xuất ra màn hình số tiền cần có. Kết quả làm tròn đến phần

nguyên.

Ví dụ 1:

Nhập từ bàn phím Xuất ra màn hình

Số hoa cần mua = 15

Đơn giá một cành hoa hồng = 1000

Số hoa tối thiểu để được giảm giá = 20

Số tiền cần có = 15000

Ví dụ 2:

Nhập từ bàn phím Xuất ra màn hình

Số hoa cần mua = 30


Đơn giá một cành hoa hồng = 1000

Số hoa tối thiểu để được giảm giá = 10

Số tiền cần có = 22500

Giải thích: giá mỗi hoa là 1000 đồng, nhưng mua số lượng nhiều hơn 10 hoa

được giảm 25% nên giá mỗi hoa giảm còn 750 đồng

Trang 2/7

BÀI 2.(5,0 điểm) CHIA QUÀ

Trong ngày Tết Trung thu, nhà thiếu nhi đã tổ chức rước đèn trung thu cho các

em thiếu thi. Tất cả các em đều hào hứng tham gia các trò chơi của ban tổ chức. Để

động viên tinh thần các em, ban tổ chức sẽ chấm điểm ở các trò chơi để xếp hạng và

phát quà. Tuy nhiên vì là ngày vui, ban tổ chức muốn tất cả các em đều nhận được

quà, kể cả em xếp hạng cuối cùng.

Cách phát quà của ban tổ chức như sau: em xếp hạng cuối cùng sẽ được 1 gói

quà, em xếp hạng kế trên em cuối cùng được 4 gói quà,…Nói chung, em xếp hạng

cao sẽ có số gói quà nhiều hơn bạn xếp hạng liền sau mình 3 gói quà. Biết rằng có n

em tham gia rước đèn trung thu và khi tổng kết điểm thì không có hai em nào có cùng

số điểm.

Yêu cầu:Hãy cho biết ban tổ chức cần chuẩn bị bao nhiêu gói quà để phát

trong đêm Trung thu nếu số lượng em thiếu nhi tham gia đã được biết trước?

Dữ liệu vào:Nhập từ bàn phím số nguyên dương n là số em thiếu nhi tham gia

rước đèn trung thu (1≤n≤1000).

Kết quả ra:Xuất ra màn hình số gói quà mà ban tổ chức cần chuẩn bị.

Ví dụ:

Nhập từ bàn phím Xuất ra màn hình

Số em thiếu nhi = 5 Số gói quà chuẩn bị = 35

Giải thích: Số quà từng em nhận được lần lượt là: 1, 4, 7, 10, 13

BÀI 3.(5,0 điểm) CHUỖI NGỌC

Dọc theo con đường tơ lụa, những con lạc đà cần mẫn chuyên chở tơ lụa,

hương liệu và ngọc ngà đá quý của Phương Đông. Đá quý được phân thành 26 loại

ký hiệu bằng chữ cái la tinh thường từ a đến z. Các lái buôn muốn bán được hàng với

giá càng cao càng tốt. Trong chuyến đi này một lái buôn mang theo bộ đá quý gồm n

viên (1 ≤ n≤ 250). Ông xâu tất cả thành chuỗi và bày ra trên thảm trước một lãnh
chúa hùng mạnh. Vị lãnh chúa cân nhắc đánh giá chất lượng bộ đá quý để quyết định

có nên mua hay không. Theo quy tắc truyền thống của địa phương, giá trị của chuỗi

ngọc phụ thuộc vào sự xuất hiện các cặp ngọc (ai

, bi

), tức là phải có ngọc loại ai

đi

trước loại bi(i= 1..k, 1 ≤ k≤ 676). Nếu giá trị chuỗi ngọc đủ lớn, lãnh chúa sẽ mua

toàn bộ chuỗi ngọc.

Yêu cầu:Cho biết số viên ngọc n, xâu Sthể hiện các loại ngọc trong chuỗi và

cách định giá trị chuỗi ngọc của địa phương. Hãy xác định giá trị của chuỗi ngọc.

Dữ liệu vào:Cho từ tệp văn bản có tên BL3.INPcó dạng như sau:

- Dòng đầu tiên ghi hai số nguyên nvà k.

- Dòng thứ hai chứa xâu S.

- Tiếp theo là k dòng, mỗi dòng chứa hai ký tự xác định cặp giá trị.

Kết quả:Ghi ra tệp văn bản có tên BL3.OUTgồm một số nguyên duy nhất là

giá trị của chuỗi ngọc.

Trang 3/7

Ví dụ:

BL3.INP BL3.OUT

73

abacaba

ab

ac

bb

Giải thích:

- Dòng thứ ba là cách thứ nhất xác định cặp giá trị: ngọc loại a đứng trước ngọc

loại b. Với cách này thì có 4cặp (xem hình bên).

- Dòng thứ tư là cách thứ hai xác định cặp giá trị: ngọc loại a đứng trước ngọc

loại c. Với cách này thì có 2cặp.

- Dòng thứ năm là cách thứ ba xác định cặp giá trị: ngọc loại b đứng trước

ngọc loại b. Với cách này thì có 1cặp.


BÀI 4.(5,0 điểm) TỔNG LỚN NHẤT

Tranh thủ trong giờ ra chơi, hai bạn Nam và Bình rủ nhau chơi trò tìm số. Hai

bạn lần lượt mỗi người viết một số nguyên lên bảng, Nam viết số thứ nhất, Bình viết

số thứ hai, rồi đến lượt Nam viết số thứ ba,… Cứ tiếp tục như vậy hai bạn viết được

một dãy gồm nsố a1, a2, …, an. Đến đây hai bạn chưa kịp chơi trò chơi của mình thì

đã đến giờ học. Thầy vào lớp, sẳn thấy dãy số trên bảng, thầy đã đặt ra câu đố: Tìm

một đoạn liên tiếp các số trong dãy số trên sao cho tổng giá trị các số trong đoạn đó là

lớn nhất. Vì dãy số có quá nhiều số nên cả lớp nhìn hoa cả mắt mà vẫn chưa tìm ra

được đáp án. Bạn hãy lập trình giải giúp các bạn trong lớp nhé.

Dữ liệu vào:Cho từ tệp văn bản có tên BL4.INPcó dạng như sau:

- Dòng đầu tiên ghi số nguyên n(1≤n≤1000)

- Dòng thứ hai ghi dãy n số nguyên a1, a2, …, an(-1000 ≤ ai

≤ 1000, i=1..n)

Kết quả:Ghi ra tệp văn bản có tên BL4.OUTgồm một số nguyên duy nhất là

tổng lớn nhất của một đoạn liên tiếp các số trong dãy.

Ví dụ:

BL4.INP BL4.OUT

10

2 -9 4 1 -3 5 8-7 3 1

15

--- HẾT ---

Họ và tên thí sinh: .......................................... Số báo danh: ..............................

Chữ ký của giám thị 1: ...................... Chữ ký của giám thị 2: ............................

Lưu ý: Thí sinh không được sử dụng tài liệu. Giám thị không giải thích gì thêm.

abacaba

abacaba

a b a c a b a

Trang 4/7

PHÒNG GIÁO DỤC VÀ ĐÀO TẠO

HUYỆN LAI VUNG

HƯỚNG DẪN CHẤM VÀ THANG ĐIỂM

KỲ THI CHỌN HỌC SINH GIỎI LỚP 9


NĂM HỌC 2014 – 2015

MÔN: TIN HỌC

BÀI 1.(5 điểm) NHỮNG ĐÓA HOA HỒNG

a. Thuật toán:

Kiểm tra nếu số hoa cần mua nhỏ hơn số hoa tối thiểu để được giảm giá thì số tiền =

số hoa * đơn giá; ngược lại thì số tiền = số hoa * đơn giá * 0.75

b. Chương trình tham khảo:

ProgramBL1;

Varn,m,a:Longint;

Begin

Write('So hoa can mua = ');

Readln(n);

Write('Don gia mot canh hoa = ');

Readln(m);

Write('So hoa toi thieu de duoc giam gia = ');

Readln(a);

Ifn<a then

Write('So tien can co = ',n*m)

Else

Write('So tien can co = ',n*m*0.75 :8:0);

Readln;

End.

c. Bộ TEST:

TEST Dữ liệu nhập Kết quả Điểm

1 n = 20

m = 5000

a = 30

100000 1,0

2 n = 25

m = 1200

a = 50

30000 1,0
3 n = 15

m = 1800

a=5

20250 1,0

4 n = 27

m = 1200

a = 27

24300 1,0

5 n = 100

m = 10000

a = 30

750000 1,0

Trang 5/7

BÀI 2.(5 điểm) CHIA QUÀ

a. Thuật toán:

Đây là bài toán tính tổng n phần tử đầu tiên của cấp số cộng có công sai d=3. Cũng

có thể áp dụng lệnh For để tính.

b. Chương trình tham khảo:

ProgramBL2;

Varn,i,a,S:Longint;

Begin

Write('So em thieu nhi = ');

Readln(n);

S:=1; a:=1;

Fori:=2 ton do

Begin

a:=a+3;

S:=S+a;

End;

Write('So goi qua chuan bi = ',S);

Readln;

End.
c. Bộ TEST:

TEST Dữ liệu nhập Kết quả Điểm

1 10 145 1,0

2 245 89915 1,0

3 679 691222 1,0

4 853 1090987 1,0

5 1000 1499500 1,0

BÀI 3.(5 điểm) CHUỖI NGỌC

a. Thuật toán:

Với mỗi cặp vị trí i và j (i<j) trong xâu chuỗi, ta kiểm tra xem cặp ký tự Si, S

có nằm

trong số k cặp giá trị hay không. Để giảm thời gian kiểm tra, ta dùng một mảng hai chiều

A[‘a’..’z’, ‘a’..’z’] để đánh dấu các cặp giá trị.

b. Chương trình tham khảo:

ProgramBL3;

Constfin ='BL3.INP';

fout='BL3.OUT';

VarA:Array['a'..'z','a'..'z'] ofInteger;

S:String;

c1,c2:Char;

n,k,i,j,d:Longint;

f:Text;

Begin

Assign(f,fin);

Reset(f);

Readln(f,n,k);

Readln(f,S);

Trang 6/7

Fori:=1 tok do

Begin

Readln(f,c1,c2);
A[c1,c2]:=1;

End;

Close(f);

n:=Length(S);

d:=0;

Fori:=1 ton-1 do

Forj:=i+1 ton dod:=d + A[s[i],s[j]];

Assign(f,fout);

ReWrite(f);

Write(f,d);

Close(f);

End.

c. Bộ TEST:Các dữ liệu nhập xem trong file BL31.INP

TEST File Input BL3.OUT Điểm

1 BL31.INP 13 1,0

2 BL32.INP 52 1,0

3 BL33.INP 159 1,0

4 BL34.INP 1730 1,0

5 BL35.INP 13785 1,0

BÀI 4.(5 điểm) TỔNG LỚN NHẤT

a. Thuật toán:

Mỗi đoạn con được xác định bởi vị trí phần tử bắt đầu đoạn và vị trí phần tử cuối

đoạn. Với mỗi đoạn con, ta tính tổng các phần tử của đoạn rồi so sánh chọn ra tổng lớn nhất.

Gọi Sk= a1+ a2+ … ak(k=1..n)

Khi đó ta có ai+ ai+1+ … + aj= Sj– Si-1(ở đây ta khởi tạo S0=0)

Theo cách này ta không cần lưu lại mảng a.

b. Chương trình tham khảo:


ProgramBL4;

Constfin ='BL4.INP';

fout='BL4.OUT';

VarS:Array[0..1000] ofLongint;

n,x,i,j,max:Longint;

f:Text;

Begin

Assign(f,fin);

Reset(f);

Readln(f,n);

S[0]:=0;

Fori:=1 ton do

Begin

Read(f,x);

S[i]:=S[i-1] + x;

End;

Close(f);

Trang 7/7

max:=S[1];

Fori:=1 ton do

Forj:=i ton do

Ifmax < S[j]-S[i-1] thenmax:=S[j] - S[i-1];

Assign(f,fout);

ReWrite(f);

Write(f,max);

Close(f);

End.

c. Bộ TEST:Các dữ liệu nhập xem trong file

TEST File Input BL4.OUT Điểm

1 BL41.INP 9 1,0

2 BL42.INP 909 1,0

3 BL43.INP 2327 1,0


4 BL44.INP 3523 1,0

5 BL45.INP 7893 1,0

---Hết---

ĐỀ CHÍNH THỨC - VÒNG I


bài 1 (2,0 điểm):

Tam giác vuông ABC (Â=900) có AH là đường cao. Viết chương trình cho
phép nhập BH và CH từ bàn phím rồi thực hiện:

a. Tính cạnh AB của tam giác.

b. Tính diện tích tam giác ABC.


Ví dụ:

Dữ liệu vào Dữ liệu ra


Nhap BH: 2 AB = 2.83
Nhap CH: 2 Dien tich tam giac ABC: 4.00
Nhap BH: 0 Nhap BH: (Yêu cầu nhập lại BH >0)
Nhap CH: 2

Bài 2(3,0 điểm):

Viết chương trình cho phép nhập một dãy gồm n số nguyên (Số n và các
phần tử của dãy được nhập từ bàn phím). Thực hiện:

a. Cho biết giá trị lớn nhất của dãy.

b. In ra các phần tử của dãy là số chính phương.

c. Dãy đan dấu là dãy có tính chất: không có hai phần tử cạnh nhau có
dấu giống nhau. Cho biết dãy vừa nhập (không chứa phần tử 0) có đan
dấu không?
Ví dụ:

Dữ liệu vào Dữ liệu ra


Nhap so phan tu: 4 Gia tri lon nhat: 3
Nhap day: -4; 3; -2; 1
Cac phan tu chinh phuong la: 1

Day dan dau


Nhap so phan tu: 5 Gia tri lon nhat: 5
Nhap day: -4; 3; 2; -1; 5
Cac phan tu chinh phuong la:

Day khong dan dau

Bài 3(3,0 điểm):


Viết chương trình cho phép nhập số nguyên dương N rồi thực hiện:

a. In ra tất cả các ước số nguyên dương của N.

b. In ra số ước số nguyên dương của số N

c. In ra số M nhỏ nhất thỏa: 0 < M  N có nhiều ước số nguyên dương


nhất.
Ví dụ:

Dữ liệu vào Dữ liệu ra


Nhap so N: 10 Cac uoc cua N la: 1; 2; 5; 10

So uoc cua N la: 4.

So M la: 6
Nhap so N: 30 Cac uoc cua N la: 1; 2; 3; 5; 6; 10; 15;
30

So uoc cua N la: 8

So M là: 24
Nhap so N: 0 Nhap so N: (Yêu cầu nhập lại số N)

Bài 4 (2,0 điểm):

Xét các chữ số từ 0 đến 9. Nếu chữ số có một đường khép kín thì ta gọi chữ số đó
có 1 lỗ hổng, có hai đường khép kín thì ta gọi số đó có 2 lỗ hổng, và không có đường
khép kín nào thì ta gọi chữ số đó có 0 lỗ hổng. Vậy các chữ số 0, 4, 6, 9 có 1 lỗ hổng,
chữ số 8 có 2 lỗ hổng và các chữ số 1, 2, 3, 5, 7 có 0 lỗ hổng. Số lỗ hổng của một số tự
nhiên N là tổng số lỗ hổng của các chữ số của nó.
Hãy viết chương trình cho phép đếm số lỗ hổng của một số tự nhiên N (0 ≤ N ≤
2147483647).
Ví dụ:

Dữ liệu vào Dữ liệu ra


Nhap N: 388247 So lo hong la: 5
Nhap N: 0 So lo hong la: 1
Nhap N: 123 So lo hong la: 0

==HẾT==
ĐỀ CHÍNH THỨC - VÒNG II
Bài 1 (2,5 điểm):

Viết chương trình nhập vào từ bàn phím một số nguyên dương n
(n≤1000), sau đó tính và in lên màn hình giá trị của các biểu thức sau (kết quả
lấy đến 6 chữ số thập phân):

a. T= (có n dấu căn bậc hai)

b.

Bài 2: (2,5 điểm)

Tìm tất cả các số có bốn chữ số thỏa mãn tính chất: Nếu chọn xóa đi một
chữ số thích hợp nào đó của nó thì số đó giảm đi 9 lần.

Ví dụ: Số 1350 khi chọn và xóa đi số 3 ta được 150. Vì 150 . 9 = 1350 nên
1350 là số cần tìm.

Bài 3: (2,5 điểm)

Viết chương trình cho phép nhập ngày, tháng, năm và in ra ngày, tháng,
năm của ngày hôm sau. Biết rằng:

Các tháng 1, 3, 5, 7, 8, 10, 12 có 31 ngày.

Các tháng 4, 6, 9, 11 có 30 ngày.

Tháng 2: - Năm nhuận có 29 ngày

- Năm không nhuận có 28 ngày

Năm nhuận là năm chia hết cho 4 nhưng không chia hết cho 100.
Ví dụ:

Dữ liệu vào Dữ liệu ra


Ngay: 10 - Thang: 1 - Nam: 2012 11/1/2012
Ngay: 31 - Thang: 12 - Nam: 2011 1/1/2012
Ngay: 28 - Thang: 2 - Nam: 2000 1/3/2001
Ngay: 28 - Thang: 2 - Nam: 2012 29/2/2012

Bài 4: (2,5 điểm)

Số tự nhiên N có k chữ số được gọi là số AmStrong nếu N bằng tổng các


lũy thừa bậc k của các chữ số của nó:
Ví dụ: Số 153 có 3 chữ số và 153 = 13 + 53 + 33 nên nó là số AmStrong.

Hãy viết chương trình in ra các số Amstrong nhỏ hơn hoặc bằng n với n
được nhập từ bàn phím.

==HẾT==

UBND HUYỆN KỲ THI HỌC SINH GIỎI LỚP 9 CẤP HUYỆN


QUẾ SƠN
PH NĂM HỌC 2011-2012
ÒNG GD&ĐT
Môn: Tin học - Lớp 9

Thời gian làm bài: 150 phút (Không kể thời


gian giao đề)

HƯỚNG DẪN CHẤM - VÒNG I

Bài 1: (2,0 điểm)

Khai báo Program Bai1; 0,50


Var BH,CH,AB,AC:Real;
Nhập dữ Begin 0,50
liệu
Repeat

Write('Nhap BH: ');Readln(BH);

Until BH>0;

Repeat

Write('Nhap CH: ');Readln(CH);

Until CH>0;
Tính AB AB:=sqrt(BH*(BH+CH)); 0,50
Writeln('AB = ',AB:4:2);
Tính diện AC:=sqrt(CH*(BH+CH)); 0,50
tích
Writeln('Dien tich tam giac ABC: ',AB*AC/2:4:2);

Readln;

End.

Cụ thể:

- Khai báo: Nếu khai báo kiểu số nguyên thì cho 0,25 điểm.

- Nhập dữ liệu: Nhập mỗi dữ liệu (BH, CH) cho 0,25 điểm.

- Tính và in: Do có rất nhiều cách tính khác nhau nên GK cần xem xét phương pháp mỗi cách tính để định điểm
theo khung trên. Nếu in không định dạng (Ví dụ: thiếu:4:2 trong lệnh in) trừ 0,25 điểm cho cả hai câu.
Bài 2:(3,0 điểm)

Khai báo Program Bai2; 0,50

Var n,i,max:integer;

M:array[1..20] of integer;

ok:boolean;
Nhập mảng Begin 0,50

Write('Nhap so phan tu:');Readln(n);

For i:=1 to n do

Begin

Write('M[',i,']=');Readln(M[i]);

End;
Tìm phần tử max:=M[1]; 0,50
lớn nhất
For i:=2 to n do if M[i]>Max then Max:=M[i];

Writeln('Gia tri lon nhat la: ',Max);


Tìm các phần Write('Cac phan tu chinh phuong la: '); 0,75
tử chính
phương For i:=1 to n do if (M[i]>=0) and

(sqr(int(sqrt(M[i])))=M[i]) then write(M[i],';');


Kiểm tra tc ok:=true; 0,50
đan dấu For i:=1 to n-1 do if M[i]*M[i+1]>0 then ok:=false;
In ra kết luận if ok then Writeln('Day dan dau') else Writeln('Day khong dan dau'); 0,25

Readln

End.

Chi tiết:

- Tìm các phần tử chính phương:

+ Cần kiểm tra M[i]>0 nếu không có trừ 0,25 điểm.

+ Có thể thay int bằng trunc.

+ Nếu không có phần tử chính phương nào thì in 'Cac phan tu chinh phuong la: ' rồi để
trống.

- Kiểm tra t/c đan dấu: Có thể thay For i:=1 to n-1 do if M[i]*M[i+1]>0 bằng For i:=2 to n
do if M[i]*M[i-1]>0

- In ra kết luận: if ok có thể thay if ok = true.

Bài 3:(3,0 điểm)

Khai báo Program Bai3; 0,25


Var N,M,i,j,SU,Max:integer;
Nhập N Begin 0,25
Repeat

Write('Nhap so N: ');Readln(N);

Until N>0
Tìm các ước Write('Cac uoc cua N la: '); 0,50
của N
For i:=1 to N do if N mod i = 0 then Write(i,';');

Writeln;
Tìm số ước SU:=0; 0,50

For i:=1 to N do if N mod i = 0 then SU:=SU+1;

Writeln('So N co ',SU,' uoc so');


Duyệt các số Max:=0; 0,25
J<=N
For j:=1 to N do

Begin
Tìm ước của SU:=0; 0,50
mỗi số J
For i:=1 to j do if j mod i = 0 then

SU:=SU+1;
So sánh với if SU > Max then 0,50
Max để lưu lại
số có nhiều Begin
ước nhất
Max:=SU;

M:=j;

End;

End;
In ra M Write('So ',M,' co nhieu uoc nhat va so uoc la ',max); 0,25

Readln

End.

Cụ thể: Trong trường hợp có nhiều số có số ước nhiều nhất bằng nhau thì chỉ yêu cầu in ra một số. Ví dụ: Với
N = 32 thì có hai số M thỏa là 24 và 30 đều có số ước nhiều nhất bằng nhau là 8. Lúc đó có thể in ra 24 hoặc
30 hoặc cả hai số.

Bài 4: (2,0 điểm)

Khai báo Program Bai4; 0,25

Var N: longint;

cs,lh:integer;
Nhập N, Begin 0,25
khởi tạo lh
Write('Nhap so N: ');Readln(N);

lh:=0;
Lấy chữ số Repeat 0,25
cuối cs:=N mod 10;
Kiểm tra để if cs = 8 then lh:=lh+2 else 0,50
tính và cộng
số lỗ hổng if (cs=0) or(cs=4) or(cs=6) or(cs=9) then

lh:=lh+1;
Xóa chữ số N:=N div 10; 0,25
cuối
ĐK lặp until N = 0; 0,25
In ra lh Writeln('So N co ',lh,' lo hong'); 0,25

Readln

End.

Chi tiết:

-Khai báo: Cần khai báo biến N kiểu Longint mới thỏa giới hạn N của đề

Tìm lh: Nếu dùng vòng lặp while N>0 do ... thì trường hợp N = 0 sẽ tính lh = 0 trong khi kết quả đúng là 1.
Trường hợp này trừ 0,25 điểm.

UBND HUYỆN KỲ THI HỌC SINH GIỎI LỚP 9 CẤP


QUẾ SƠN HUYỆN
PHÒ
NG GD&ĐT NĂM HỌC 2011-2012

Môn: Tin học - Lớp 9

HƯỚNG DẪN CHẤM - VÒNG II


Bài 1: (2,5 điểm)

Khai báo Program Tinh_B_Thuc; 0,25

Var n,i:integer;

T,S,PS:real;
Nhập dữ Begin 0,25
liệu Write('Nhap n: ');Readln(n);
Gán GT T:=0; 0,25
đầu
Tính T For i:=n downto 1 do 0,50
T:=SQRT(T+i);
In T Writeln('T = ',T:10:8); 0,25
Gán GT PS:=1; S:=0; 0,25
đầu
Tính S For i:=1 to n do 0,50

Begin

PS:=PS/i;
S:=S+PS;

End;
In S Write('S = ',S:10:8); 0,25

Readln

End.

Bài 2: (2,5 điểm)

Khai báo Program Xoa_so; 0,25

Var a,b,c,d:byte;

So4,So31,so32,so33,so34:integer;
Duyệt qua Begin 0.50
tất cả các
số có bốn For a:=1 to 9 do
chữ số
For b:=0 to 9 do

For c:= 0 to 9 do

For d:=0 to 9 do
Lập các số Begin 1.00

So4:=a*1000+b*100+c*10+d;

So31:=b*100+c*10+d;

So32:=a*100+c*10+d;

So33:=a*100+b*10+d;

So34:=a*100+b*10+c;
Xét điều if (So4=So31*9) or (So4=So32*9) or (So4=So33*9) or 0,50
kiện (So4=So34*9) then
In các số Writeln(So4:6,So4 div 9:6); 0,25
thỏa mãn.
End;

Readln;

End.

Cụ thể:

- Khai báo: Có thể sử dụng các kiêu dữ liệu nguyên khác để khai báo.

- Đối với các vòng lặp: Biến a chạy từ 1 đến 9; các biến b,c,d chạy từ 0 đến 9. Nếu sai cho mỗi trường hợp a: -
0,25 điểm; b,c,d: -0,25 điểm.

Bài 3: (2,5 điểm)

Khai báo; Program Ngay_Hom_Sau; 0,25


Nhập dữ liệu
Var Ngay,Thang,Nam:integer;

Begin
Write('Ngay: ');Readln(ngay);

Write('Thang: ');Readln(thang);

Write('Nam:');Readln(nam);
Tăng ngay lên ngay:=ngay+1; 0,25
1
Tháng đủ, Case thang of 0,50
ngày > 31 thì
sang ngày 1 1,3,5,7,8,10,12:
tháng tiếp theo
if ngay > 31 then

Begin

ngay:=1;

thang:=thang+1;
Nếu tháng >12 if thang>12 then 0,25
thì sang tháng
1 năm tiếp Begin
theo
thang:=1;

nam:=nam+1;

End;

End;
Tháng thiếu 4,6,9,11: 0,25
ngày >30 thì
sang ngày 1 if ngay > 30 then
tháng tiếp theo
Begin

ngay:=1;

thang:=thang+1;

End;
Năm nhuận, 2: if (nam mod 4 = 0) and (nam mod 100 <>0) then 0,50
ngày >29
Begin

if ngay > 29 then

Begin

ngay:=1;

thang:=thang+1;

End;

end
Năm không else 0,25
nhuận, ngày
>28 if ngay > 28 then

Begin

ngay:=1;
thang:=thang+1;

End;

End;
In kết quả Writeln('Ngay hom sau: ', ngay,'/',thang,'/',nam); 0,25

Readln

End.

Bài 4: (2,5 điểm)

Khai báo Program So_AmStrong; 0,25

Var k:byte;

M:array[1..10] of byte;

n,i,ii,S:longint;
Hàm tính Function Mu(a,b:integer):Longint; 0,50
lũy thừa
Var T:Longint;i:byte;

Begin

T:=1;

For i:=1 to b do T:=T*a;

Mu:=T

End;
Nhập dữ Begin 0,25
liệu Write('Nhap so n: ');Readln(n);
Tách lấy {Duyet qua cac so tu 1 den n} 0,75
các chữ số
và tìm số For i:=1 to n do
chữ số
{Tach lay cac chu so }

Begin

k:=0; ii:=i;

while ii<> 0 do

Begin

k:=k+1;

m[k]:=ii mod 10;

ii:=ii div 10

End;
Lập giá trị {lap so va xet} 0,50
biểu thức
S:=0;

For ii:=1 to k do S:=S +Mu(M[ii],k);


Xét điều if S = i then writeln(i); 0,25
kiện và in
kết quả End;

Readln;

End.

You might also like