Bài 1 tại sao nhiều bạn dùng cách đổi từ string sang int thế nhở. Nếu chỉ có thế thì ra đề này làm chi, mà nếu làm cách đó thì trư phi code bằng python còn lại cứ cho vài chục chữ số vào là sai hết

program Test3; var dai,so,s:integer; daikq:longint; a,b:array [0..10000] of integer; kq:array [0..100000000] of integer; {--------kiem tra so nguyen to----------------------------------} function checknt(n:integer):boolean; var i:integer; begin checknt:=true; i:=2; while ((n mod i )<>0) and (i<=int(sqrt(n))) do i:=i+1; if i<=int(sqrt(n)) then checknt:=false; end; {-------cac so ngto nho hon n-------------------------------------} procedure solve(so:integer); var i,j:integer; begin j:=0; for i:=2 to so do if checknt(i) then begin a[j]:=i; j:=j+1; end; dai:=j-1; for i:=0 to dai do b[i]:=0; end; {-----------------xuat ket qua vao mang---------------------} procedure xuatketqua; var i:integer; begin for i:=0 to dai do begin if b[i]=1 then begin kq[daikq]:=a[i]; inc(daikq); end; end; inc(daikq); kq[daikq]:=0; end; {------------------------------------------------------------} procedure xuly(m:integer); var j:longint; begin for j:=m to dai do if s+a[j]<=so then begin b[j]:=1; s:=s+a[j]; if s=so then xuatketqua else if j<dai-1 then xuly(j+1); b[j]:=0; s:=s-a[j]; end; end; {---------------------------------------------------------} procedure xetmang; var daimin,dem,i,kt,j:longint; begin dem:=0; daimin:=dai; for i:=0 to daikq-1 do begin if kq[i]<>0 then inc(dem) else begin if dem<daimin then daimin:=dem; dem:=0; end; end; dem:=0; for i:=0 to daikq-1 do begin if kq[i]<>0 then inc(dem) else begin if dem=daimin then begin kt:=i; for j:=kt-daimin to (kt-1) do write(kq[j],' '); writeln; end; dem:=0; end; end; end; {-------------------------------------------------------------} begin daikq:=0; s:=0; writeln('Phan tich so: '); readln(so); If so <=500 then if checknt(so) then writeln(so) else begin writeln('la tong cua: '); solve(so); xuly(0); xetmang; end else writeln('So qua lon'); readln; end.
Comment