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
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à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.