Trường THPT Quang Trung
ĐỀ THI KHẢO SÁT
Đống Đa
CHỌN ĐỘI TUYỂN HỌC SINH GIỎI KHỐI 11
Môn: Tin học - Thời gian: 90’
Bài 1: Một số có tổng các ước nhỏ hơn nó bằng chính nó được gọi là số hoàn chỉnh.
Ví dụ: 6 có các ước nhỏ hơn nó là 1, 2, 3. Tổng 1 + 2 + 3 = 6 nên 6 là số hoàn chỉnh.
Viết chương trình xét xem một số n được nhập từ bàn phím có phải là số hoàn
chỉnh không?
Ví dụ: Khi nhập n = 6 thì xuất: “6 la so hoan chinh”. Khi nhập n=10 thì xuất “ 10
khong la so hoan chinh”.
Bài 2: Lập trình:
Nhập vào số tự nhiên N (1 < N < 65000). Hãy kiểm tra số N vừa nhập có phải là
số nguyên tố không ? Nếu đúng thì thông báo ra màn hình đây là số nguyên tố, ngược
lại thì phân tích số N thành tích các thừa số nguyên tố.
Bài 3: Nhập dãy số nguyên A gồm N phần tử (N<100). Kiểm tra dãy số có đối xứng
hay không? Kiểm tra dãy có tăng dần hay không? Nếu dãy không ph ải là m ảng
tăng dần, hãy sắp xếp nó thành mảng tăng dần.
Ví dụ: Mảng A:
1 15 6 7 4 7 6 15 1
Kết quả:
Mang A doi xung, Mang A khong phai la mang tang dan
Mảng A:
2 5 6 7 14 17 26 26 31
Kết quả:
Mang A khong doi xung, Mang A khong phai la mang tang
dan
Sắp xếp:
2 5 6 7 14 17 26 31
Bài 1.
Program Bai1;
Uses crt;
Var n, i, s: integer;
0,25
Begin
clrscr;
write('nhap so n: ');readln(n);
s:=0;
For i:= 1 to n -1 do if n mod i = 0 then s:=s+i;
if s = n then
Begin
write(n, ' la so hoan chinh vi');
write(1);
for i:= 2 to n -1 do if n mod i = 0 then write(‘+’,i);
writeln(‘=’,n);
End
0,50
0,75
0,50
0,75
Else writeln(n, ‘khong phai so hoan chinh’);
Readln
End.
0,25
Bài 2
Chương trình
Program Bai2;
Uses Crt;
Var
m, n: Longint;
i: integer;
Begin
repeat
ClrScr;
Write(‘Nhap mot so tu nhien: ');Readln(n);
Until (n>1) and (n<=65000);
i:=2;
While (n mod i <> 0 do
i:= i+1;
if i = n then
Writeln (n, ' la so nguyen to')
Điểm
0.5
2
else
{tach so n thanh cac thua so nguyen to}
Begin
m:=n;
Write (n, 'duoc tach thanh cac thua so nguyen to = ');
While (m mod 2 = 0) do
Begin
m:=m div 2;
Write('2');
if m>0 then write ('.');
End;
i:=3;
While (m > 2) do
Begin
While (m mod i = 0) do
Begin
m:=m div i;
Write (i);
if m>2 then Write ('.');
End;
i:=i+2;
End;
End;
Readln;
End.
Bộ Test thư
Dữ liệu vào
Dữ liệu ra
Nhap mot so tu nhien: 5 5 la so nguyen to
Nhap 1 so tu nhien: 15
15 duoc tach thanh tich cac thua so nguyen to: 3.5
Nhap 1 so tu nhien: 3456 2.2.2.2.2.2.2.3.3.3
Bài 3
Ý tưởng thuật toán mảng đối xứng
Var Kt: boolean;
For i:=1 to N do
If a[i]=a[N-i+1] then kt:= true
Else kt:= false;
If kt:=true then Write (‘Mang doi xung’)
Else Write (‘Mang ko doi xung’);
1.25
1.25
1
2