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.
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
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.
Mình thử trả lời các bạn xem có đúng ko nha!!!
__________
program CP;
var scs,tong,m,i,z,k:longint;
A:array[1..10000000] of longint;
f:text;
begin
assign(f, 'CP.INP');
reset(f);
readln(f,m);
for i:=1 to m do read(f,A[i]);
close(f);
tong:=0;
scs:=0;
for z:=1 to m do
for k:=1 to A[z] do
if (k*k=A[z]) then
begin
scs:=scs+1;
tong:=tong+A[z];
end;
assign(f, 'CP.OUT');
rewrite(f);
if (scs<>0) then writeln(f, tong) else writeln(f, '0');
close(f);
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.
var n,m,i,j,p,q,k,tam:byte;
a:array[1..100,1..100] of integer;
b:array[1..10000] of integer;
f:text;
function tong(x,y:integer):integer;
var i,j:integer;
begin
tong:=0;
for i:=x to x+p-1 do
for j:=y to y+q-1 do
tong:=tong+a[i,j];
exit(tong);
end;
begin
assign(f,'HCN.inp');reset(f);
readln(f,n,m,p,q);
for i:=1 to n do
begin
for j:=1 to m do read(f,a[i,j]);
readln(f);
end;
close(f);
assign(f,'HCN.out');rewrite(f);
k:=0;
for i:=1 to n-q+1 do
begin
for j:=1 to m-p+1 do
begin
inc(k);
b[k]:=tong(i,j);
end;
end;
for i:=1 to k-1 do
for j:=k downto i+1 do
if b[j]>b[j-1] then
begin
tam:=b[j];
b[j]:=b[j-1];
b[j-1]:=tam;
end;
writeln(f,b[1]+b[2]);
close(f);
readln;
end.
mình ghi dư cái số 4 bên phần BAI7.INP nha mn
bằng python nha mọi người