Hãy nhập câu hỏi của bạn vào đây, nếu là tài khoản VIP, bạn sẽ được ưu tiên trả lời.
Lời giải:
Nhập mảng phải có nhập số lượng phần tử nữa bạn nhé.
program hotrotinhoc;
const fi='bai5.inp';
fo='bai5.out';
var f: text;
i,j,n,max,max1,max2,max3,max4: longint;
a: array[1..32000] of integer;
function dn(x: integer): integer;
var s: integer;
begin
s:=0; dn:=0;
while x<>0 do
begin
s:=s*10+(x mod 10);
x:=x div 10;
end;
dn:=s;
end;
function nt(x1: integer): boolean;
var j: integer;
begin
nt:=false;
if x1<2 then exit;
for j:=2 to trunc(sqrt(x1)) do
if x1 mod j=0 then exit;
nt:=true;
end;
function tongcs(x2: integer): integer;
var s1: integer;
begin
s1:=0;
while x2<>0 do
begin
s1:=s1+(x2 mod 10);
x2:=x2 div 10;
end;
tongcs:=s1;
end;
function ucln(x3,y: integer) : integer;
var z: integer;
begin
while y<>0 do
begin
z:=x3 mod y;
x3:=y;
y:=z;
end;
ucln:=x3;
end;
procedure ip;
begin
assign(f,fi);
reset(f);
readln(f,n);
for i:=1 to n do
read(f,a[i]);
close(f);
end;
procedure out;
begin
assign(f,fo);
rewrite(f);
max:=0; max2:=0; max3:=0;
for i:=1 to n do
begin
if (dn(a[i])=a[i]) and (a[i]>max) then max:=a[i];
if dn(a[i])>max2 then max2:=dn(a[i]);
if (nt(a[i])) and (tongcs(a[i])>max3) then max3:=a[i];
end;
writeln(f,max);
for i:=1 to n do if dn(a[i])=max2 then
writeln(f,a[i]);
max4:=0;
for i:=1 to n do
for j:=i to n do
if (a[i]<>a[j]) and (ucln(a[i],a[j])>max4) then max4:=ucln(a[i],a[j]);
for i:=1 to n do
for j:=i to n do
if ucln(a[i],a[j])=max4 then writeln(f,a[i],' ',a[j]);
write(f,max3);
close(f);
end;
begin
ip;
out;
end.
VD chính xác :
m1.inp | m1.out |
5 -2 3 5 4 -7 |
-2 3 5 4 -7 -7 -2 3 4 5 |
Lời giải :
program hotrotinhoc;
const fi='m1.inp';
fo='m1.out';
var f: text;
i,n,tg : integer;
a: array[1..32000] of integer;
procedure ip;
begin
assign(f,fi);
reset(f);
readln(f,n);
for i:=1 to n do
read(f,a[i]);
close(f);
end;
procedure out;
begin
for i:=1 to n do
write(f,a[i],' ');
writeln(f);
for i:=1 to n-1 do
for j:=i+1 to n do
if a[i]>a[j] then
begin
tg:=a[i];
a[i]:=a[j];
a[j]:=tg;
end;
for i:=1 to n do write(f,a[i],' ');
close(f);
end;
begin
ip;
out;
end.
cau1
uses crt;
const
fi='CAU1.inp';
fn='CAU1.out';
var n: string;
f:text;
m,i,a,tong: integer;
BEGIN
clrscr;
assign(f,fi);reset(f);
read(f,n);
read(f,m);
close(f);
assign(f,fn);rewrite(f);
for i:= length(n) downto length(n)-m+1 do
begin
val(n[i],a);
tong:=tong+a;
end;
write(f,tong);
close(f);
readln;
END.
cau3
uses crt;
const
fi='CAU1.inp';
fn='CAU1.out';
var n: string;
f:text;
m,i,a,tong: integer;
BEGIN
clrscr;
assign(f,fi);reset(f);
read(f,n);
read(f,m);
close(f);
assign(f,fn);rewrite(f);
for i:= length(n) downto length(n)-m+1 do
begin
val(n[i],a);
tong:=tong+a;
end;
write(f,tong);
close(f);
readln;
END.
Câu 2:
*Ý tưởng :
+ Ý 1:
- Bạn không cần chạy đến vô hạn như đề cho đầu , bạn chỉ cần 1 vòng for chạy đến k là được bởi vì nó lấy kí tự thứ k.
- Bạn cho 1 vòng for chạy đến k và chuyển dãy số đó sang xâu và cho 1 biến đếm vào
- Nếu biến đếm bằng với k thì write(s[d]);
+ Ý 2:
- Các số có 1 chữ số chỉ có từ 1 đến 9. Nên nếu d<9 thì write(s[d]);
- Nếu mà d>9 và d là số lẻ thì write(s[d-1],s[d]) ngược là nếu d là số chẵn thì write(s[d],s[d+1]);
Đây là ý tưởng , nếu bạn không hiểu chỗ nào cứ hỏi mình , bạn làm theo ý tưởng mình xem nhé. Nếu không được mình sẽ gửi bài làm của mình cho bạn xem.
Lời giải :
program hotrotinhoc;
var st,s : string;
i : integer;
begin
readln(s);
for i:=1 to length(s) do
if s[i] in ['0'..'9'] then st:=st+s[i] else if not(s[i] in ['0'..'9']) then st:=st+' ';
while st[1]=#32 do delete(st,1,1);
while st[length(st)]=#32 do delete(st,length(st),1);
while pos(#32#32,st)<>0 do delete(st,pos(#32#32,st),1);
write(st);
readln
end.
const
fi='b9.inp';
fn='b9.out';
var f:text;
i:longint;
s,s1:string;
begin
assign(f,fi);reset(f);
readln(f,s);
close(f);
assign(f,fn);rewrite(f);
i:=0;
while i<=length(s) do
begin
i:=i+1;
if s[i] in ['0'..'9'] then
begin
s1:='';
while s[i] in ['0'..'9'] do
begin
s1:=s1+s[i];
if i=length(s) then break;
i:=i+1;
end;
writeln(f,s1);
end;
end;
close(f);
end.
đây là bài của tớ
uses crt;
const finp='Bai1.inp';
fout='Bai1.out';
type mangc=array[1..10000] of char;
mangl=array[1..10000] of longint;
var f:text;
ch:mangc; a:mangl;
n:longint;
procedure doc;
var i:longint;
begin
assign(f,finp);
reset(f);
readln(f,n);
for i:=1 to n do read(f,ch[i]);
close(f);
end;
procedure ghi;
begin
assign(f,fout);
rewrite(f);
end;
procedure tim;
var i,j,d,k,l:longint;
begin
for i:=n-2 downto 1 do
begin
a[i]:=1;
d:=0;
for j:=i+1 to n do
begin
l:=a[j];
if ch[i]=ch[j] then a[j]:=d+2
else if a[j-1]>a[j] then a[j]:=a[j-1];
d:=l;
end;
end;
end;
procedure xuly;
var i:longint;
begin
fillchar(a,sizeof(a),0);
if n=1 then a[n]:=1
else begin
a[n-1]:=1;
a[n]:=ord(ch[n]=ch[n-1])+1;
end;
if n>2 then tim;
write(f,n-a[n]);
end;
begin
doc;
ghi;
xuly;
close(f);
end.
ai có thể giải thích cho mình bài này đc không
nhất là cái "procedure tim" và mục đích của mảng số nguyên a
mk cảm ơn nhiều