Chạy chương trình bằng tay:
For i:=1 to n do
for j:=i to n do
If a[i]>a[j] then
Begin
Tg:= a[i];
a[i]:=a[j];
a[j]:=Tg;
End;
(Tg là biến trung gian)
For i := 1 to T-1 do
For j := i+1 to T do
Begin
If M [ i]>M[ j] then
Begin
Tg:= M[ i];
M[ i]:= M[j];
M[j]:=Ig;
End;
Đoạn chương trình này làm gì
Đoạn chương trình này làm công việc đổi chỗ hai phần tử m[i] và m[j] nếu m[i]>m[j]
*p/s: Đoạn chương trình này thường xuất hiện trong bài sắp xếp tăng dần của dãy số
Cho chương trình sau
Program Xep_so;
Const T = 10;
Var M : Array[ 1 . . T ] of Integer;
Tg, i, j: Integer;
Begin
For i: = 1 to T do
Begin
Write(‘Hay nhap gia tri so thu’ , i , ’la :’);
Readln(M[ i ]);
End;
For i : = 1 to T - 1 do
For j : = i + 1 to T do
Begin
If M[ i ] > M[ j ] then
Begin
Tg: = M[ i ];
M[ i ]: = M[ j ];
M[ j ]: = Tg;
End;
End;
Writeln(‘ KET QUA SU CHUONG TRINH CHAY LA:’);
For i: = 1 to T do Writeln(M[ i ]);
Readln
End.
A. Cho biết đoạn chương trình này làm gì?
Program bai; Var n,i: integer; A: Array[1..50]of integer; Begin Writa('nhap n='); Readln(n); For i:=1 to n do begin wrote ('A[' ,i, ']='); readln(A[i]); end; For i:=1 to n do if A[i]>0 then write(a[i], ' '); Readln; End. Biến n,i trong chương trình trên dùng dể làm gì?
Program bai; Var n,i: integer; A: Array[1..50]of integer; Begin Writa('nhap n='); Readln(n); For i:=1 to n do begin wrote ('A[' ,i, ']='); readln(A[i]); end; For i:=1 to n do if A[i]>0 then write(a[i], ' '); Readln; End. Mảng A trong chương trình trên có số phần tử tối đa là bao nhiêu
Câu 6: Cho biết kết quả in ra màn hình của đoạn chương trình sau
Câu a)
i := -1;
j:= 20;
For k:= 1 to 5 do
If k mod 2 = 0 then i:= i + 1;
j := j + i;
Writeln(i,‘ ’,j);
Câu b)
n := 127;
m := 0;
While n < >0 do
Begin
m := m * 10 + n mod 10;
n := n div 10;
end;
writeln(m);
a/
Giá trị đầu của vòng lặp là 1, giá trị cuối là 5 => biến đếm của k lần lượt tăng thành 1 dãy số 1,2,3,4,5
k mod 2 =0 -> nếu k là số chẵn thì biến i tăng lên 1 đơn vị. Dãy số gồm 2 số chẵn (2,4) => i tăng 2 đơn vị => i = -1 + 1 + 1 = 1
j = j + i => j = 20 + 1 = 21
Vậy i=1; j=21
b/
Lần lặp thứ nhất: m=0*10 + 7 = 7 ; n = 12
Lần lặp thứ 2: m=7*10 + 2 = 72; n= 1
Lần lặp thứ 3: m=720 + 1 = 721; n=0 (n=0 => dừng vòng lặp)
Vậy m=721
cho biết số vòng lặp và giá trị của biến s sau khi thực hiện đoạn chương trình: a) S:=0;
For i:=2 to 8 do S :=S+i
b) S:=0; n:=1;
For i:=1 to 6 do
Begin
S:=S+n;
n:=n+i;
end;
c) S:=2;
For i:=1 to 10 do
If(i mod 2)=0 then S:=S+i;
d) S:=0; i:= 1,5;
While S<7 do S:=S+i;
e) S:=0; i:=1;
While i<9 do
Begin
S:=S+i;
i:=i+2;
End;
f) S:=2; i:=1;
While i<= 10 do
Begin
If (i mod 2) then S:=S+i;
i:=i+1;
End;
ĐÁP ÁN VÒNG 2 CUỘC THI TIN HỌC:
* ĐỀ 1:
Câu 1:
CÂU 1:
const fi='uc.inp'
fo='uc.out'
var f: text;
a,b,c : integer;
function uc(x,y): integer;
var z: integer;
begin
while y<>0 do
begin
z:=x mod y;
x:=y;
y:=z;
end;
uc:=x;
end;
procedure ip;
begin
assign(f,fi);
reset(f);
read(f,a,b,c);
close(f);
end;
procedure out;
begin
assign(f,fo);
rewrite(f);
write(f,uc(uc(a,b),c);
close(f);
end;
begin
ip;
out;
end.
Câu 2:
const fi='SN.inp'
fo='SN.out'
var
f:text;
i,n:integer;
s:real;
procedure ip;
begin
assign(f,fi);
reset(f);
read(f,n);
close(f);
end;
procedure out;
begin
assign(f,fo);
rewrite(f);
s:=0;
for i:= 1 to n do
begin
if i mod 2 <> 0 then
s:=s+(i/(i+1));
if i mod 2 = 0 then
s:=s-(i/(i+1));
end;
write(f,s:0:2);
close(f);
end;
BEGIN
ip;
out;
END.
Câu 3:
const fi='SSNT.inp'
fo='SSNT.out'
var
f:text;
n,i,max,j:integer;
s:string;
a:array[1..32000] of integer;
function nt(x:integer):boolean;
var
i:integer;
begin
nt:=false;
if x < 2 then exit;
for i:= 2 to trunc(sqrt(x)) do
if x mod i = 0 then exit;
nt:=true;
end;
function snt(x:integer):boolean;
begin
snt:=false;
if x= 0 then exit;
while nt(x) = true do
x := x div 10;
if x = 0 then snt:=true;
end;
procedure ip;
begin
assign(f,fi);
reset(f);
max:=a[1];
readln(f,n);
for i:= 1 to n do
begin
read(f,a[i]);
if( a[i] < max ) and (nt(a[i]) = true) then
max:=a[i];
end;
close(f);
end;
procedure out;
begin
assign(f,fo);
rewrite(f);
writeln(f,max);
max:=0;
for i:= 1 to n do
begin
if snt(a[i]) = true then
begin
str(a[i],s);
if length(s) = 2 then
max:=max+a[i];
s:=''
end
else
a[i]:=-32000;
end;
writeln(f,max);
for i:= 1 to n-1 do
for j :=i+1 to n do
if a[i] > a[j] then
begin
max:=a[i];
a[i]:=a[j];
a[j]:=max;
end;
for i:= 1 to n do
if (a[i] > 0) and (a[i] <> a[i-1]) then write(f,a[i],' ');
close(f);
end;
BEGIN
ip;
out;
END.
CÂU 4:
const fi='TUOI.INP'
fo='TUOI.OUT'
var f: text;
a,b: byte;
procedure ip;
begin
assign(f,fi);
reset(f);
read(f,a,b);
close(f);
end;
procedure out;
begin
assign(f,fo);
rewrite(f);
if (x=y*2) and (x>18) and (x-y>=18) then write(f,'CO') else write(f,x-y*2);
close(f);
end;
begin
ip;
out;
end.
const fi='CM.INP'
fo='CM.OUT'
var f: text;
a,n,b,k: integer;
a1: array[1..32000] of integer;
function nt(x: integer): boolean;
var i: integer;
begin
nt:=false;
if x<2 then exit;
for i:=2 to trunc(sqrt(x)) do if x mod i=0 then exit;
nt:=true;
end;
procedure ip;
begin
assign(f,fi);
reset(f);
read(f,n);
close(f);
end;
procedure out;
begin
assign(f,fo);
rewrite(f);
d:=0;
for a:=1 to k do
if nt(a) then
begin
inc(d);
a1[d]:=a;
end;
for a:=1 to d do
for b:=x to d do
if a1[a]+a1[b]=k then writeln(f,a1[a],'+',a1[b]);
end;
close(f);
end;
begin
ip;
out;
end.
*ĐỀ 2 :
BÀI LÀM CỦA BẠN LÊ HOÀNG THẮNG:
//----------------------------CAU 1--------------------------------
var s,d,n,i,u:longint;
a:array[0..32001] of longint;
f:text;
function ucln(x,y:longint):longint;
begin
if y=0 then exit(x) else exit(ucln(y,x mod y));
end;
begin
assign(f,'ucln.inp');reset(f);
readln(f,n);
for i:=1 to n do read(f,a[i]); close(f);
u:=a[1];
for i:=2 to n do u:=ucln(u,a[i]);
assign(f,'ucln.out');rewrite(f);
write(f,'UCLN: ',u,' UC: ');
for i:=1 to u do if u mod i=0 then
begin
if i<>u then write(f,i,',') else write(f,i);
if i<10 then inc(d) else inc(s,i);
end;
writeln(f);
writeln(f,d); write(f,s);
close(f);
end.
//----------------------------CAU 2--------------------------------
var n,i:longint;
s:real;
f:text;
begin
assign(f,'sn.inp');reset(f);
readln(f,n); close(f);
for i:=1 to n do if odd(i) then s:=s-i/(i+1) else s:=s+i/(i+1);
assign(f,'sn.out');rewrite(f);
write(f,s:0:2);
close(f);
end.
//----------------------------CAU 3--------------------------------
var a:array[0..1000000] of boolean;
b:array[0..1000000] of longint;
i,j,k,n,d:longint;
f:text;
procedure taosang(n:longint);
var i,j:longint;
begin
for i:=2 to trunc(sqrt(n)) do if not(a[i]) then
begin
j:=i*i;
while j<=n do begin a[j]:=true; inc(j,i); end;
end;
end;
begin
assign(f,'boso.inp');reset(f);
readln(f,n); taosang(n); close(f);
assign(f,'boso.out');rewrite(f);
for i:=2 to n do if not(a[i]) then
begin
inc(d);
b[d]:=i;
end;
for i:=1 to d do
for j:=i to d do
if (n-b[i]-b[j]>=b[j]) and not(a[n-b[i]-b[j]]) then
writeln(f,b[i],' ',b[j],' ',n-b[i]-b[j]);
close(f);
end.
//----------------------------CAU 4--------------------------------
THAM KHẢO ĐỀ 1.
//----------------------------CAU 5--------------------------------
var n,i,s,t:longint;
f:text;
begin
assign(f,'u.inp');reset(f);
readln(f,n); t:=n; close(f);
assign(f,'u.out');rewrite(f);
for i:=2 to trunc(sqrt(n)) do
begin
if n mod i=0 then
begin
write(f,i,' ');
repeat n:=n div i until n mod i>0;
end;
if t mod (i*i)=0 then inc(s,i*i);
end;
writeln(f);
write(f,s+1);
close(f);
end.
*ĐỀ CHUNG:
BÀI LÀM CỦA BẠN ĐÀO XUÂN SƠN :
Câu 1:
const fi='TCS.inp'
fo='TCS.out'
var
f:text;
x:char;
tg:byte;
s:integer;
CODE:integer;
procedure ip;
begin
assign(f,fi);
reset(f);
s:=0;
while not(eof(f)) do
begin
read(f,x);
if x in ['0'..'9'] then
begin
val(x,tg,CODE);
s:=s+tg;
end;
end;
close(f);
end;
procedure out;
begin
assign(f,fo);
rewrite(f);
write(f,s);
close(f);
end;
BEGIN
ip;
out;
END.
Câu 2:
const fi='t.inp'
fo='t.out'
var
f:text;
s:string;
i:byte;
procedure ip;
begin
assign(f,fi);
reset(f);
read(f,s);
close(f);
end;
procedure out;
begin
assign(f,fo);
rewrite(f);
s[1]:=upcase(s[1]);
for i:= 2 to length(s) do
if s[i-1] <> #32 then
s[i]:=lowercase(s[i]) else
s[i]:=upcase(s[i]);
write(f,s);
close(f);
end;
BEGIN
ip;
out;
END.
Em dốt tin lắm cô ơi, cô tạo khóa học nào đi, cô còn kèm em học
program xoa_ky_tu;
uses crt;
var x,y:string;
i,j,dem,max: integer;
a:char;
BEGIN
clrscr;
write('nhap xau x : ');
readln(x);
y:=x;
for i:=1 to length(x) do
begin
j:=i+1;
repeat
if x[i]=x[j] then delete(x,j,1)
else
j:=j+1;
until (j>length(x));
end;
writeln('xau sau khi loai bo ki tu giong nhau la :',x);
max:=0;
a:=' ';
for i:=1 to length(x) do
begin
dem:=0;
for j:=1 to length(y) do
if x[i]=y[j] then
dem:=dem+1;
if dem>max then
begin
max:=dem;
a:=x[i];
end;
end;
writeln('ki tu ',a,' xuat hien ',max,' lan');
readln;
end.
Gì vậy ông :v ??? cho ăn nội quy phát cho vui mồm :>
I. Nội qui tham gia "Giúp tôi giải toán"
1. Không đưa câu hỏi linh tinh lên diễn đàn, chỉ đưa các bài mà mình không giải được hoặc các câu hỏi hay lên diễn đàn;
2. Không trả lời linh tinh, không phù hợp với nội dung câu hỏi trên diễn đàn.
3. Không "Đúng" vào các câu trả lời linh tinh nhằm gian lận điểm hỏi đáp.
Các bạn vi phạm 3 điều trên sẽ bị giáo viên của Online Math trừ hết điểm hỏi đáp, có thể bị khóa tài khoản hoặc bị cấm vĩnh viễn không đăng nhập vào trang web.
ĐÁP ÁN VÒNG 1 CUỘC THI TIN HỌC LẦN 2
Câu 1:
const fi='ptyn.inp'
fo='ptyn.out'
var a:array[1..100,1..100]of integer;
i,j,n,m,snn,sln,vtc,vth,x,z,kt,k,dem:integer;
f1,f2:text;
begin
assign(f1,fi); reset(f1);
assign(f2,fo); rewrite(f2);
readln(f1,n,m);
for i:=1 to n do
for j:=1 to m do
read(f1,a[i,j]);
{----------nho nhat hang----------}
dem:=0;
for i:=1 to n do
begin
snn:=a[i,1];
for j:=1 to m do
if snn>=a[i,j] then
begin
snn:=a[i,j];
vth:=i;
vtc:=j;
end;
kt:=0;
sln:=a[vth,vtc];
for k:=1 to n do
if sln<a[k,vtc] then kt:=1;
if kt=0 then
begin
writeln(f2,vth,' ',vtc);
dem:=dem+1;
end;
end;
if dem=0 then writeln(f2,'Khong co phan tu yen ngua');
close(f1);
close(f2);
end.
Câu 2: Bài làm của bạn @Tran Nguyễn Đăng Dương
Program connect;
uses crt;
const fi='connect.inp'
fo='connect.out'
type num=record
number,top:integer;
end;
var a:array[0..1000] of num;
t:num;
i,n,j:integer;
f1,f2:text;
Function timtop(a:integer):integer;
begin
if a<10 then exit(a);
exit(timtop(a div 10));
end;
Begin
clrscr;
assign(f1,fi); reset(f1);
assign(f2,fo); rewrite(f2);
read(f1,n);
for i:=1 to n do
begin
read(f1,a[i].number);
a[i].top:=timtop(a[i].number);
end;
for i:=1 to n-1 do
for j:=i+1 to n do
begin
if a[i].top=a[j].top then
begin
if a[i].number>a[j].number then
begin
t:=a[i];
a[i]:=a[j];
a[j]:=t;
end;
end
else if a[i].top<a[j].top then
begin
t:=a[i];
a[i]:=a[j];
a[j]:=t;
end;
end;
for i:=1 to n do write(f2,a[i].number);
Close(f1);
Close(f2);
End.
Câu 3:
const fi='quediem.inp'
fo='quediem.out'
var f1,f2:text;
i,m,n,d,x,j,csc:longint;
a,b:array[1..100]of integer;
begin
assign(f1,fi); reset(f1);
assign(f2,fo); rewrite(f2);
readln(f1,n);
{---------------------------tim-so-lon-nhat----------------------------}
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----------------------------}
write(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,'1');
3: write(f2,'7');
4: write(f2,'4');
5: write(f2,'2');
6: write(f2,'0');
7: write(f2,'8');
end;
end;
if d>1 then
begin
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 dec(csc);
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);
end.
Câu 4:
const fi='tvh.inp'
fo='tvh.out'
var n,d,dem,sl,s2cs,s3cs,s4cs,s5cs,s6cs,s7cs,s8cs,k,i,d1:longint;
st,st1,stk:string;
f1,f2:text;
begin
assign(f1,fi); reset(f1);
assign(f2,fo); rewrite(f2);
readln(f1,n,k);
str(n,st);
d:=length(st);
case d of
1: write(9);
2: begin
sl:=n-9;
dem:=9+sl*2;
end;
3: begin
s2cs:=(99-10)+1;
s3cs:=n-99;
dem:=9+s2cs*2+s3cs*3;
end;
4: begin
s2cs:=(99-10)+1;
s3cs:=(999-100)+1;
s4cs:=n-999;
dem:=9+s2cs*2+s3cs*3+s4cs*4;
end;
5: begin
s2cs:=(99-10)+1;
s3cs:=(999-100)+1;
s4cs:=(9999-1000)+1;
s5cs:=n-9999;
dem:=9+s2cs*2+s3cs*3+s4cs*4+s5cs*5;
end;
6: begin
s2cs:=(99-10)+1;
s3cs:=(999-100)+1;
s4cs:=(9999-1000)+1;
s5cs:=(99999-10000)+1;
s6cs:=n-99999;
dem:=9+s2cs*2+s3cs*3+s4cs*4+s5cs*5+s6cs*6;
end;
7: begin
s2cs:=(99-10)+1;
s3cs:=(999-100)+1;
s4cs:=(9999-1000)+1;
s5cs:=(99999-10000)+1;
s6cs:=(999999-100000)+1;
s7cs:=n-999999;
dem:=9+s2cs*2+s3cs*3+s4cs*4+s5cs*5+s6cs*6+s7cs*7;
end;
8: begin
s2cs:=(99-10)+1;
s3cs:=(999-100)+1;
s4cs:=(9999-1000)+1;
s5cs:=(99999-10000)+1;
s6cs:=(999999-100000)+1;
s7cs:=(9999999-1000000)+1;
s8cs:=n-9999999;
dem:=9+s2cs*2+s3cs*3+s4cs*4+s5cs*5+s6cs*6+s7cs*7+s8cs*8;
end;
end;
if k<=dem then
begin
i:=1;
d1:=0;
repeat
str(i,st1);
d1:=d1+length(st1);
inc(i);
until d1>=k;
stk:=st1[length(st1)-(d1-k)];
writeln(f2,stk);
end;
close(f1);
close(f2);
end.
Câu 5: Bài làm của bạn @Tran Nguyễn Đăng Dương
Program robot;
uses crt;
const fi='robot.inp'
fo='robot.out'
type path=record
num,npath:integer;
end;
var a:array[0..1000,0..1000] of path;
i,j,n:integer;
b,c:array[1..2] of Integer;
st,st1:string;
f1,f2:text;
check:boolean;
min:real;
Function he2sanghe10(st1:string):real;
var d,x,tg:integer;
stt:string;
begin
he2sanghe10:=0;
d:=Length(st1);
for i:=1 to d do
begin
stt:=st1[i];
Val(stt,x,tg);
he2sanghe10:=he2sanghe10*2+x;
end;
end;
Procedure robotpath(x,y:integer; st1:string);
var k:integer;
t:string;
S:real;
begin
if (x=n) and (y=n) then
begin
S:=0;
S:=he2sanghe10(st1);
if (min>S) then
begin
min:=S;
st:=st1;
end;
end
else
for k:=1 to 2 do
begin
if (x+b[k]>=1) and (y+c[k]>=1) and (x+b[k]<=n) and (y+c[k]<=n) then
begin
str(a[x+b[k],y+c[k]].num,t);
st1:=st1+t;
a[x+b[k],y+c[k]].npath:=a[x,y].npath+1;
robotpath(x+b[k],y+c[k],st1);
Delete(st1,Length(st1),1);
if (a[x+b[k],y+c[k]].npath=0) then break;
end;
end;
end;
Begin
clrscr;
assign(f1,fi); reset(f1);
assign(f2,fo); rewrite(f2);
b[1]:=1; c[2]:=1;
min:=99999999999999999999999999999999999999;
read(f1,n);
for i:=1 to n do
for j:=1 to n do
begin
read(f1,a[i,j].num);
a[i,j].npath:=n*n;
end;
a[1,1].npath:=1;
Str(a[1,1].num,st1);
robotpath(1,1,st1);
writeln(f2,st);
Close(f1);
Close(f2);
End.
Bài làm của bạn @lê chí hiếu(bạn được 2,1 điểm)
bài 1
program PTYN;
uses crt;
var a:array[1..100,1..100]of integer;
i,j,m,n:integer;
f1,f2:text;
Max, Min:Integer;
Kt:boolean;
Procedure XuatMang;
begin
For i:=1 to n do
begin
for j:=1 to m do
Write(a[i,j]:4);
Writeln;
end;
end;
Procedure MaxCot(l:Integer);
var p:Integer;
begin
Max:=A[1,l];
For p:=2 to n do
if A[p,l]>Max then Max:=A[p,l];
end;
Procedure MinHang(k:Integer);
var o:integer;
begin
Min:=A[k,1];
For o:=2 to n do
if A[k,o]<Min then Min:=A[k,o];
end;
begin
clrscr;
assign(f1,'ptyn.inp');
assign(f2,'ptyn.out');
reset(f1);rewrite(f2);
while not EOF(f1) do
begin
kt:=false;
readln(f1,n,m);
for i:=1 to n do
begin
for j:=1 to m do
Read(f1,a[i,j]);
readln(f1);
end;
for i:=1 to n do
begin
for j:=1 to n do
begin
MaxCot(j);
MinHang(i);
if Max=Min then
begin
Writeln(f2,'(',i,',',j,')');
kt:=true;
end;
end;
end;
If kt=false then Writeln(f2,'Khong co ptu yen ngua.');
end;
Close(f1); Close(f2);
Readln
End.
Bài 4
const fi='tvh.inp';
fo='tvh.out';
var n,d,dem,sl,s2cs,s3cs,s4cs,s5cs,s6cs,s7cs,k,i,d1:longint;
st,st1,stk:string;
f1,f2:text;
begin
assign(f1,fi); reset(f1);
assign(f2,fo); rewrite(f2);
readln(f1,n,k);
str(n,st);
d:=length(st);
case d of
1: write(9);
2: begin
sl:=n-9;
dem:=9+sl*2;
end;
3: begin
s2cs:=(99-10)+1;
s3cs:=n-99;
dem:=9+s2cs*2+s3cs*3;
end;
4: begin
s2cs:=(99-10)+1;
s3cs:=(999-100)+1;
s4cs:=n-999;
dem:=9+s2cs*2+s3cs*3+s4cs*4;
end;
5: begin
s2cs:=(99-10)+1;
s3cs:=(999-100)+1;
s4cs:=(9999-1000)+1;
s5cs:=n-9999;
dem:=9+s2cs*2+s3cs*3+s4cs*4+s5cs*5;
end;
6: begin
s2cs:=(99-10)+1;
s3cs:=(999-100)+1;
s4cs:=(9999-1000)+1;
s5cs:=(99999-10000)+1;
s6cs:=n-99999;
dem:=9+s2cs*2+s3cs*3+s4cs*4+s5cs*5+s6cs*6;
end;
7: begin
s2cs:=(99-10)+1;
s3cs:=(999-100)+1;
s4cs:=(9999-1000)+1;
s5cs:=(99999-10000)+1;
s6cs:=(999999-1000000)+1;
s7cs:=n-999999;
dem:=9+s2cs*2+s3cs*3+s4cs*4+s5cs*5+s6cs*6+s7cs*7;
end;
end;
if k<=dem then
begin
i:=1;
d1:=0;
repeat
str(i,st1);
d1:=d1+length(st1);
i:=i+1;
until d1>=k;
stk:=st1[length(st1)-(d1-k)];
writeln(f2,stk);
end;
close(f1);
close(f2);
end.
Bài 5
PROGRAM robot;
VAR A:ARRAY[0..30,0..30] OF BYTE;
F:ARRAY[0..30,0..30] OF LONGINT;
m,n:INTEGER;
PROCEDURE Enter;
VAR i,j:INTEGER;
BEGIN
readln(m,n);
FOR i:=1 TO m DO
BEGIN
FOR j:=1 TO n DO read(A[i,j]);
readln;
END;
FOR i:=0 TO m DO A[i,0]:=-1;
FOR j:=0 TO n DO A[0,j]:=-1;
END;
FUNCTION Max(a,b:LONGINT):LONGINT;
BEGINIF (a>b) THEN Max:=a ELSE Max:=b;
END;
PROCEDURE Optimize;
VAR i,j:INTEGER;
BEGIN
FOR i:=0 TO m DO F[i,0]:=-1;
FOR j:=0 TO n DO F[0,j]:=-1;
F[0,1]:=0;
FOR i:=1 TO m DO
FOR j:=1 TO n DO
F[i,j]:=2*Max(F[i,j-1],F[i-1,j])+A[i,j];
END;
PROCEDURE Trace(i,j:INTEGER);
BEGINIF (i=1) AND (j=1) THEN
writeln(F[m,n])
ELSE
BEGIN
IF F[i,j-1]>F[i-1,j] THEN
Trace(i,j-1)
ELSE
Trace(i-1,j);
writeln(i,' ',j);
END;
END;
BEGIN
Assign(Input,'Robot.inp'); Reset(Input);
Assign(Output,'Robot.out');Rewrite(Output);
Enter;
Optimize;
Trace(m,n);
close(Input);
close(Output);
END.
Bài làm của bạn @Luân Đào(bạn được 2,8 điểm)
program b1;
uses crt;
var a:array[1..100,1..100]of integer;
i,j,m,n:integer;
f1,f2:text;
Max, Min:Integer;
Kt:boolean;
Procedure XuatMang;
begin
For i:=1 to n do
begin
for j:=1 to m do
Write(a[i,j]:4);
Writeln;
end;
end;
Procedure MaxCot(l:Integer);
var p:Integer;
begin
Max:=A[1,l];
For p:=2 to n do
if A[p,l]>Max then Max:=A[p,l];
end;
Procedure MinHang(k:Integer);
var o:integer;
begin
Min:=A[k,1];
For o:=2 to n do
if A[k,o]<Min then Min:=A[k,o];
end;
begin
clrscr;
assign(f1,'ptyn.inp');
assign(f2,'ptyn.out');
reset(f1);rewrite(f2);
while not EOF(f1) do
begin
kt:=false;
readln(f1,n,m);
for i:=1 to n do
begin
for j:=1 to m do
Read(f1,a[i,j]);
readln(f1);
end;
for i:=1 to n do
begin
for j:=1 to n do
begin
MaxCot(j);
MinHang(i);
if Max=Min then
begin
Writeln(f2,i,',',j,' la phan tu yen ngua.');
kt:=true;
end;
end;
end;
if kt=false then Writeln(f2,'Khong co phan tu yen ngua.');
end;
Close(f1); Close(f2);
Readln;
End.
program b2;
uses crt;
var a:array[1..100] of integer;
b:array[1..100] of string;
i,j,n:longint;
tam:string;
f1,f2:text;
begin
assign(f1,'connect.inp');
reset(f1);
assign(f2,'connect.out');
rewrite(f2);
readln(f1,n);
for i:=1 to n do
read(f1,a[i]);
for i:=1 to n do
str(a[i],b[i]);
tam:='';
for i:=1 to n do
for j:=i+1 to n do
if b[i]<b[j] then
begin
tam:=b[i];
b[i]:=b[j];
b[j]:=tam;
end;
for i:=1 to n do
write(f2,b[i]);
close(f1);
close(f2);
end.
program b4;
var n,b,dem,sl,s2,s3,s4,s5,s6,s7,k,i,b1: longint;
st,s1,sk:string;
f1,f2: text;
procedure ip;
begin
assign(f1,'C:\FPC\3.0.4\bin\i386-win32\tvh.inp');
reset(f1);
read(f1,n,k);
close(f1);
end;
procedure op;
begin
assign(f2,'C:\FPC\3.0.4\bin\i386-win32\tvh.out');
rewrite(f2);
str(n,st);
b:=length(st);
case b of
1: write(f2,'9');
2: begin
sl:=n-9;
dem:=9+sl*2;
end;
3: begin
s2:=(99-10)+1;
s3:=n-99;
dem:=9+s2*2+s3*3;
end;
4: begin
s2:=99-10+1;
s3:=999-100+1;
s4:=n-999;
dem:=9+s2*2+s3*3+s4*4;
end;
5: begin
s2:=99-10+1;
s3:=999-100+1;
s4:=9999-1000+1;
s5:=n-9999;
dem:=9+s2*2+s3*3+s4*4+s5*5;
end;
6: begin
s2:=99-10+1;
s3:=999-100+1;
s4:=9999-1000+1;
s5:=99999-10000+1;
s6:=n-99999;
dem:=9+s2*2+s3*3+s4*4+s5*5+s6*6;
end;
7: begin
s2:=99-10+1;
s3:=999-100+1;
s4:=9999-1000+1;
s5:=99999-10000+1;
s6:=n-999999;
dem:=9+s2*2+s3*3+s4*4+s5*5+s6*6+s7*7;
end;
end;
if k>=dem then
begin
i:=1;
b1:=0;
repeat
str(i,s1);
b1:=b1+length(s1);
i:=i+1;
until b1>=k;
sk:=s1[length(s1)-(b1-k)];
write(f2,sk);
close(f2);
end;
end;
begin
ip;
op;
end.
program b5;
const fi = 'robot.inp';
fo = 'robot.out';
var f1,f2: text;
n,x,i,j: integer;
A: array[1..50,1..50] of string;
procedure ip;
begin
assign(f1,fi);
reset(f1);
read(f1,n);
close(f1);
end;
procedure op;
begin
for i:=1 to n do
for j:=1 to n do
begin
read(f1,x);
str(x,a[i][j]);
end;
for i:=2 to n do
begin
a[1,i]:=a[1,i-1]+a[1,i];
a[i,1]:=a[i-1,1]+a[i,1];
end;
for i:=2 to n do
for j:= 2 to n do
a[i,j]:= min(a[i-1,j],a[i,j-1]+a[i,j]);
assign(f2,fo);
rewrite(f2);
write(f2,a[n,n]);
close(f2);
end;
begin
ip;
op;
end.
Bài làm của bạn @TRẦN MINH HOÀNG
Câu 1:
var M,N,i,j,i1:byte;dem,p, Min:integer;
A:Array[1..100,1..100] of integer;
fi,fo:text;
begin
assign(fi,'ptyn.inp');
reset(fi);
assign(fo,'ptyn.out');
rewrite(fo);
read(fi,M);
read(fi,N);
for i:=1 to M do
for j:=1 to N do
read(fi,A[i,j]);
dem:=0;
for i:=1 to M do
begin
Min:=A[i,1];
for j:=1 to N do
if A[i,j]<Min then Min:=A[i,j];
for j:=1 to N do
if A[i,j]=Min then
begin
p:=1;
for i1:=1 to M do if A[i1,j]>A[i,j] then begin p:=0; break end;
if p=1 then begin write(fo,i,' ',j); dem:=dem+1 end;
end;
end;
if dem=0 then write(fo,'Khong co phan tu yen ngua');
close(fi);
close(fo);
end.
Câu 2:
var n,i,j,k,doi,B:longint; Si,Sj,S1,S2:string;
A:Array[1..1000000] of longint;
fi,fo:text;
function LCM(a,b:longint):longint;
var LM:longint;
begin
LM:=1;
while ((LM mod a)<>0) OR ((LM mod b)<>0) do LM:=LM+1;
LCM:=LM;
end;
begin
assign(fi,'connect.inp');
reset(fi);
assign(fo,'connect.out');
rewrite(fo);
readln(fi,n);
for i:=1 to n do readln(fi,A[i]);
for i:=1 to n-1 do
for j:=i+1 to n do
begin
STR(A[i],S1);
STR(A[j],S2);
Si:='';Sj:='';
B:=LCM(length(S1),length(S2));
for k:=1 to ROUND(B/length(S1)) do Si:=Si+S1;
for k:=1 to ROUND(B/length(S2)) do Sj:=Sj+S2;
if Si<Sj then begin doi:=A[i];A[i]:=A[j];A[j]:=doi end;
end;
for i:=1 to n do write(fo,A[i]);
close(fi); close(fo);
end.
Câu 4:
var n,k,i:longint;
S:ansistring;
S1:string;
fi,fo:text;
begin
assign(fi,'tvh.inp');
reset(fi);
assign(fo,'tvh.out');
rewrite(fo);
read(fi,n); read(fi,k);
S:='';
for i:=1 to n do
begin
STR(i,S1);
S:=S+S1;
end;
write(fo,S[k]);
close(fi);
close(fo);
end.