Kiểu dữ liệu có cấu trúc

lê chí hiếu

Bài 1: Phân số tối giản.

Cho 2 số nguyên dương A, B (1 ≤ A, B ≤ 109). Hãy tìm phân số tối giản của phân số .

Dữ liệu vào: (PSTG.INP)

+ Dòng 1: Ghi hai số tự nhiên A và B, mỗi số cách nhau ít nhất một ký tự trắng.

Dữ liệu ra: (PSTG.OUT)

+ Dòng 1: Ghi hai số tự nhiên tương ứng là tử số và mẫu số của phân số tối giản.

Ví dụ:

PSTG.INP PSTG.OUT

25 30 5 6

16 21 16 21

Bài 2: Dãy số đối xứng.

Cho dãy gồm n số nguyên dương ( ). Dãy gồm k phần tử liên tiếp được gọi là dãy con của dãy ban đầu. Ví dụ: Dãy 2, 1, 4 là dãy con của dãy 1, 3, 2, 1, 4, 9.

Số đối xứng là số viết theo thứ tự ngược lại vẫn bằng chính nó. Số có một chữ số được coi là số đối xứng. Ví dụ: Các số 1221, 99, 282, 8 là số đối xứng; các số 12, 98, 199 không là số đối xứng.

Yêu cầu: Cho trước dãy số, hãy tìm dãy con dài nhất có các phần tử là số đối xứng.

Dữ liệu vào: (DSDX.INP)

+ Dòng 1: Ghi một số tự nhiên n là độ dài dãy số.

+ Dòng 2: Ghi n số nguyên dương, mỗi số cách nhau một ký tự trắng .

Dữ liệu ra: (DSDX.OUT)

+ Dòng 1: Ghi một số tự nhiên là độ dài dãy số dài nhất thoả mãn điều kiện. Nếu không có thì ghi -1.

+ Dòng 2: Ghi dãy số tìm được. Nếu có nhiều dãy số thoả mãn thì lấy dãy số đầu tiên tính từ bên trái.

Ví dụ:

DSDX.INP DSDX.OUT

10 44 343 567765

23 44 343 567765 43 233 98 21 989 888 3

5 87 901 223 3212 83 -1

Bài 3: Giá trị biểu thức

Cho một xâu chỉ chứa các kí tự: chữ số, dấu cộng, dấu trừ, thể hiện một biểu thức số học.

Yêu cầu: Tính giá trị của biểu thức đã cho. Biết xâu biểu thức không quá 255 kí tự, các số hạng và giá trị của biểu thức có độ lớn không quá 2.106.

Dữ liệu vào: (GTBT.INP)

+Dòng 1: Ghi duy nhất một xâu kí tự thể hiện biểu thức cần tính.

Dữ liệu ra: (GTBT.OUT)

+Dòng 1: Ghi duy nhất một số nguyên là giá trị của biểu thức.

Ví dụ:

GTBT.INP GTBT.OUT

12+23-45+6 -4

1234-998+123-345 14

Bài 4: Xếp diêm.

Bờm là một người rất thích chơi trò chơi xếp diêm. Từ các que diêm, Bờm có thể tạo ra các số theo cách xếp:

Một hôm khi Bờm đang ngồi xếp các chữ số thì Cuội đi qua. Cuội đố: “Tớ cho trước cậu n que diêm, cậu hãy xếp thành một số tự nhiên nhỏ nhất, một số tự nhiên lớn nhất từ n que diêm đó được không?”. Bờm suy nghĩ một lát rồi cũng nghĩ ra cách xếp. Vậy theo em, Bờm đã xếp như thế nào? Hãy lập trình để giải bài toán này nhé.

Yêu cầu: Cho trước n que diêm, hãy xếp n que diêm đó thành một số tự nhiên nhỏ nhất, một số tự nhiên lớn nhất có thể. (Lưu ý: Mọi số 0 đứng trước các số tự nhiên đều không có nghĩa)

Dữ liệu vào: (DIEM.INP)

+ Dòng 1: Ghi duy nhất một số tự nhiên n.

Dữ liệu ra: (DIEM.OUT)

+ Dòng 1: Ghi số tự nhiên nhỏ nhất xếp được.

+ Dòng 2: Ghi số tự nhiên lớn nhất xếp được.

Ví dụ:

DIEM.INP DIEM.OUT

18 208

11111111

25 2088

711111111111

Chu Quang Lượng
2 tháng 10 2019 lúc 13:05

Bài 1:

program pstg;
uses crt;
var a,b,i,u : integer;
f : text;
BEGIN
clrscr;
assign(f,'PSTG.INP');
reset(f);
read(f, a);
read(f, b);
u:=1;
for i:= 1 to a do if ((a mod i)=0) and ((b mod i)=0) and (i>u) then u:=i;
a:= a div u;
b:= b div u;
assign(f,'PSTG.OUT');
rewrite(f);
write(f, a,' ',b);
close(f);
END.

Bình luận (1)
Nguyễn Lê Phước Thịnh
13 tháng 10 2019 lúc 11:42

bài 4 dễ ẹt à

uses crt;
const fi='quediem.inp';
fo='quediem.out';
var i,m,n,d,x,j,csc:longint;
a,b:array[1..1000]of integer;
f1,f2:text;
begin
clrscr;
assign(f1,fi); reset(f1);
assign(f2,fo); rewrite(f2);
readln(f1,n);
{-------------------------tim-so-lon-nhat--------------------------}
write(f2,'so lon nhat la: ');
m:=n;
if m mod 2=0 then
begin
for i:=1 to n div 2 do
write(f2,'1');
end
else begin
write(f2,'7');
for i:=2 to n div 2 do
write(f2,'1');
end;
{----------------------------tim-so-nho-nhat------------------------}
writeln(f2);
a[1]:=2; b[1]:=1;
a[2]:=5; b[2]:=2;
a[3]:=4; b[3]:=4;
a[4]:=6; b[4]:=6;
a[5]:=3; b[5]:=7;
a[6]:=7; b[6]:=8;
d:=(n div 7)+1;
if n mod 7=0 then d:=d-1;
if d=1 then begin
case n of
2:write(f2,'so nho nhat la: ',1);
3:write(f2,'so nho nhat la: ',7);
4:write(f2,'so nho nhat la: ',4);
5:write(f2,'so nho nhat la: ',2);
6:write(f2,'so nho nhat la: ',0);
7:write(f2,'so nho nhat la: ',8);
end;
end;
if d>1 then
begin
write(f2,'so nho nhat la: ');
for i:=1 to d do
if i=1 then begin
b[4]:=6;
for j:=1 to 6 do
begin
x:=n;
x:=x-a[j];
csc:=x div 7+1;
if x mod 7=0 then csc:=csc-1;
if csc=d-i then begin
write(f2,b[j]);
n:=x;
break;
end;
end;
end
else begin
a[1]:=6; b[1]:=0;
a[2]:=2; b[2]:=1;
a[3]:=5; b[3]:=2;
a[4]:=4; b[4]:=4;
a[5]:=3; b[5]:=7;
a[6]:=7; b[6]:=8;
for j:=1 to 6 do
begin
x:=n;
x:=x-a[j];
csc:=(x div 7)+1;
if x mod 7=0 then csc:=csc-1;
if csc=d-i then begin
write(f2,b[j]);
n:=x;
break;
end;
end;
end;
end;
close(f1);
close(f2);
readln;
end.

Bình luận (0)

Các câu hỏi tương tự
CHANNANGAMI
Xem chi tiết
mqthien2801
Xem chi tiết
Gia Bảo Huỳnh
Xem chi tiết
phan nguyễn tấn khởi
Xem chi tiết
Tuong Le
Xem chi tiết
09 Lê Quang HIếu
Xem chi tiết
Nguyễn Toàn
Xem chi tiết
Nguyễn Khắc Tùng Lâm
Xem chi tiết
....
Xem chi tiết