const fin='PMATRIX.INP'; fou='PMATRIX.OUT'; maxN=500; oo=100000; var a:array[1..maxN,1..maxN] of longint; b:array[1..2*oo] of boolean; p:array[0..2*oo] of longint; n,m:integer; lim,l:longint; min:longint; fi,fo:text; procedure sang(); //sang de tao mang p nguye ngto var i,j:longint; begin fillchar(b,sizeof(b),true); lim:=2*lim; b[1]:=false; for i:=2 to (lim div 2) do if (b[i]) then for j:=2 to (lim div i) do b[i*j]:=false; l:=0; p[0]:=0; for i:=1 to lim do if (b[i]) then begin inc(l); p[l]:=i; end; end; function search(x:longint):longint;//tim so ngyen var left,right,mid:longint;//to nho nhat >= x begin left:=1; right:=l; repeat mid:=(left+right) div 2; if (p[mid]>=x) and (p[mid-1]<x) then exit(p[mid]); if (p[mid]>=x) then right:=mid-1; if (p[mid]<x) then left:=mid+1; until left>right; end; procedure nhap; var i,j:longint; begin read(n,m); for i:=1 to n do for j:=1 to m do begin read(a[i,j]); if (a[i,j]>lim) then lim:=a[i,j]; end; end; procedure process(); var i,j:integer; s:longint; begin sang(); //cap nhat lai ma tran a[,] //a[i,j] gio la so lan tang it nhat de a[i,j] //ban dau la nguyen to for i:=1 to n do for j:=1 to m do a[i,j]:=search(a[i,j])-a[i,j]; //tim so lan tang it nhat de 1 hang //la nguyen to min:=oo; for i:=1 to n do begin s:=0; for j:=1 to m do s:=s+a[i,j]; if (s<min) then min:=s; end; //tim so lan tang it nhat de 1 cot la //ngto for j:=1 to m do begin s:=0; for i:=1 to n do s:=s+a[i,j]; if (s<min) then min:=s; end; write(min); end; begin assign(input,fin);reset(input); assign(output,fou);rewrite(output); process(); close(input);close(output); end.
* Chuyên dạy lập trình ONLINE cho học sinh THCS, THPT *.
Mọi giao lưu, trao đổi, xin liên hệ: Lê Quang Vinh - zalo: 037.803.8755.
Page: Lớp học Code Sky
Group FB1: Ôn thi HSG9 - THTB - TS10 chuyên tin
Group FB2: Học Scratch - Ôn thi Tin học trẻ bảng A
Thứ Hai, 9 tháng 5, 2022
PMATRIX PASCAL
Đăng ký:
Đăng Nhận xét (Atom)
Không có nhận xét nào:
Đăng nhận xét
Lưu ý: Chỉ thành viên của blog này mới được đăng nhận xét.