Dữ liệu vào: Cho trong file văn bản INRA.INP có cấu trúc như sau: - Dòng 1: Ghi số nguyên dương N.. Dữ liệu ra: Ghi a file văn bản INRA.OUT có cấu trúc như sau.. - Dòng 1: Ghi số nguyên
Trang 1Trường THCS Song Mai
Họ và tên: Dương Thị Thu Trang
ĐỀ BÀI
Cho số nguyên dương N, kiểm tra đó là số chẵn hay số lẻ.
Yêu cầu: Số nguyên dương N nằm thỏa mãn 0 ≤ N ≤ 32000.
Dữ liệu vào: Cho trong file văn bản INRA.INP có cấu trúc như sau:
- Dòng 1: Ghi số nguyên dương N.
Dữ liệu ra: Ghi a file văn bản INRA.OUT có cấu trúc như sau.
- Dòng 1: Ghi số nguyên dương N và là số chẵn hay lẻ theo thứ tự từ trái sang
phải được ghi cách nhau ít nhất một dấu cách.
Ví dụ:
Cho số nguyên dương X, khi đảo ngược trật tự các chữ số của X ta sẽ thu được một số nguyên dương Y, Y được gọi là số đảo ngược của X.
Ví dụ: X = 613 thì Y = 316 là số đảo ngược của X.
Số nguyên dương Y được gọi là số nguyên tố nếu nó chỉ có hai ước số là 1
và chính nó, số 1 không phải là số nguyên tố.
Cho hai số nguyên dương P và Q (1 ≤ P ≤ Q ≤ 2109; Q - P ≤ 105).
Yêu cầu: Hãy tìm tất cả các số nguyên dương X nằm thỏa mãn P ≤ X ≤ Q và số
đảo ngược của số X là số nguyên tố.
Dữ liệu vào: Cho trong file văn bản TIMSO.INP có cấu trúc như sau:
- Dòng 1: Ghi hai số nguyên dương P Q, hai số được ghi cách nhau ít nhất một
dấu cách.
Dữ liệu ra: Ghi ra file văn bản TIMSO.OUT trên nhiều dòng, mỗi dòng ghi một
số nguyên X tìm dược.
Ví dụ:
TIMSO.INP TIMSO.OUT
13 14 16 17
Cho hai số nguyên dương M và N, M có p chữ số và N có q chữ số.
Yêu cầu: Tính tổng của hai số M và N.
Dữ liệu vào: Cho trong file văn bản TONG.INP có cấu trúc như sau:
TIMSO.INP TIMSO.OUT
Trang 2- Dòng 1: Ghi số nguyên dương p là số lượng chữ số của M (1 ≤ p ≤ 30000).
- Dòng 2: Ghi p chữ số của M theo thứ tự từ trái sang phải, các chữ số được ghi
cách nhau ít nhất một dấu cách.
- Dòng 3: Ghi số nguyên dương q là số lượng chữ số của N (1 ≤ q ≤ 30000).
- Dòng 4: Ghi q chữ số của N theo thứ tự từ trái sang phải, các chữ số được ghi
cách nhau ít nhất một dấu cách.
Dữ liệu ra: Ghi ra file văn bản TONG.OUT theo cấu trúc như sau:
- Dòng 1: Ghi số nguyên dương k là số lượng chữ số của tổng tìm được.
- Dòng 2: Ghi k chữ số của tổng tìm được theo thứ tự từ trái sang phải, các chữ
số được ghi cách nhau ít nhất một dấu cách.
Ví dụ:
6
2 2 3 2 3 9 3
2 4 7
6
2 2 3 4 8 6
Hướng dẫn chấm
Chương trình gợi ý:
Câu 1: (40 điểm) In ra
Program Tim_so;
Const fi=' INRA.INP';
fo='INRA.OUT' ;
Var N:integer;
Procedure Read_Data;
Var F:text;
Begin
Assign(f,fi);
Reset(f);
Read(f,N);
Close(f);
End;
Procedure Write_Data;
Var f:text;
Begin
Assign(f,fo);
Rewrite(f);
Write(fo,N);
If (N mod 2 = 0) then Write(fo,’ la so chan’)
else
Write(fo ,’ la so le’);
Close(f);
End;
BEGIN
Read_Data;
Trang 3Write_Data;
END
Câu 2: (35 điểm) Tìm số
Program Tim_so;
Const fi='TIMSO.INP';
fo='TIMSO.OUT' ;
Var P,Q:longint;
Time:Longint;
Times:Longint absolute 0:$46C;
Function NT(K:longint):Boolean;
Var Can,i:Longint;
Begin
If (K=2) or (K=3) then Begin NT:=True;Exit; End;
If (K<2) or (K mod 2 = 0) or (K mod 3 = 0) then Begin NT:=False; Exit; End;
NT:=True;
i:=5;
Can:=Trunc(sqrt(K));
While i<=Can do
Begin
if (K mod i = 0) or (K mod (i+2) =0) then Begin NT:=False; Exit; End
ELse inc(i,6);
End;
End;
Function Daoso(N:longint):longint;
Var S:longint;
Begin
S:=0;
While N<>0 do
Begin
S:=S*10+ (N mod 10);
N:=N div 10;
End;
Daoso:=S;
End;
Procedure Read_Data;
Var F:text;
Begin
Assign(f,fi);
Reset(f);
Read(f,P,Q);
Close(f);
End;
Procedure Write_Data;
Var f:text;
j:longint;
Begin
Trang 4Assign(f,fo);
Rewrite(f);
for j:=P to Q do
if NT(Daoso(j)) then Writeln(f,j);
Close(f);
End;
BEGIN
Time:=Times;
Read_Data;
Write_Data;
Writeln((Times-Time)/18.2:0:2);
END
Câu 3: (35 đi m) Tính t ng ể ổ
Program Tinh_tong;
Const fi= 'TONG.INP';
fo= 'TONG.OUT';
MaxN=30000;
Type mmc=Array [0 MaxN] of byte; Var N,M,Top:Longint;
A,B:mmc;C:^mmc;
Procedure Read_Data;
Var f:text;i:Longint;
Begin
Assign(f,fi);
Reset(f);
Readln(f,N);
For i:=1 to N do
Read(f,A[i]);
Readln(f);
Readln(f,M);
New(C);
Fillchar(C^,Sizeof(C^),0);
For i:=1 to M do
Read(f,C^[i]);
Close(f);
End;
Procedure Init;
Var Tg,k:Longint;
Begin
If M=N then Begin Top:=N;B:=C^;Exit End;
If N > M Then
Begin
Tg:=N-M;
For K:=M Downto 1 do
B[K+Tg]:=C^[K];
Top:=N;
End
Else
Begin
Trang 5Tg:=M-N;
For K:=N Downto 1 do B[K+Tg]:=A[K];
A:=C^;
Top:=M;
End;
Fillchar(C^,Sizeof(C^),0); End;
Procedure Process;
Var i,Nguyen,Tg:Longint; Begin
Nguyen:=0;
For i:= Top Downto 0 do Begin
Tg:=(A[i]+B[i]+Nguyen); C^[i]:= Tg mod 10; Nguyen:=Tg Div 10; End;
End;
Procedure Write_Data;
Var f:text;i:Longint;
Begin
Assign(f,fo);
Rewrite(f);
if C^[0]>0 then
Begin
Writeln(f,Top+1);
Write(f,C^[0],' ');
End
Else
Writeln(f,Top);
For i:=1 to Top do
Write(f,C^[i], ' ');
Close(f);
Dispose(C);
End;
BEGIN
Read_Data;
Init;
Process;
Write_Data;
END