O
o0_zz_0o
Chắc suất Đại học top - Giữ chỗ ngay!! ĐĂNG BÀI NGAY để cùng trao đổi với các thành viên siêu nhiệt tình & dễ thương trên diễn đàn.
bài 1 :Cho một dãy n số nguyên a1, a2, ..., an. Hãy tìm giá trị lớn nhì trong dãy.
Ví dụ: Cho dãy số gồm 3 phần tử: 1, 2, -3
Giá trị lớn nhì là: 1
Dữ liệu vào: Cho file TIMSO.INP gồm:
- Dòng đầu tiên chứa số n là số lượng các phần tử của dãy a.
- n dòng tiếp theo, dòng thứ i chứa một số nguyên ai.
Kết quả: Ghi ra file TIMSO.OUT một số nguyên là giá trị lớn nhì. Trong trường hợp không tìm thấy thì ghi ra file là: No solution
Mọi người kiểm tra hộ xem em giải bài này bằng file đúng không ?
còn mảng thì dễ quá rồi
bài 2 : Nhân 2 số nguyên bất kì , mỗi số không quá 5000 chữ số
Dữ liệu vào: cho vào file tên tự tạo :
Dòng đầu ghi chứ số thứ nhất
Dòng 2 ghi chữ số thứ 2
Kết quả: ghi ra file tên tự tạo tích của 2 số
mọi người kiểm tra bài hộ em theo yêu cầu số nhập vào có thể lên tới 5000 chữ số
Ví dụ: Cho dãy số gồm 3 phần tử: 1, 2, -3
Giá trị lớn nhì là: 1
Dữ liệu vào: Cho file TIMSO.INP gồm:
- Dòng đầu tiên chứa số n là số lượng các phần tử của dãy a.
- n dòng tiếp theo, dòng thứ i chứa một số nguyên ai.
Kết quả: Ghi ra file TIMSO.OUT một số nguyên là giá trị lớn nhì. Trong trường hợp không tìm thấy thì ghi ra file là: No solution
Mọi người kiểm tra hộ xem em giải bài này bằng file đúng không ?
còn mảng thì dễ quá rồi
Mã:
program So_Lon_Nhi;
var f,f1:text;
max,nhi,tam,n:longint;
procedure nhap;
begin
assign(f,'fi.inp');
assign(f1,'fo.out');
reset(f);
rewrite(f1);
end;
begin
nhap;
readln(f,n);
readln(f,max);
while eof(f)<>true do
begin
readln(f,nhi);
if max<>nhi then break;
end;
if (max=nhi) or (n=1) then writeln(f1,'No solution')
else
begin
if max<nhi then
begin
tam:=max; max:=nhi; nhi:=tam;
end;
reset(f);
readln(f,n);
while eof(f)<>true do
begin
readln(f,n);
if max<n then
begin
nhi:=max; max:=n;
end;
if (max>n) and (n>nhi) then nhi:=n;
end;
writeln(f1,nhi);
end;
close(f);
close(f1);
end.
bài 2 : Nhân 2 số nguyên bất kì , mỗi số không quá 5000 chữ số
Dữ liệu vào: cho vào file tên tự tạo :
Dòng đầu ghi chứ số thứ nhất
Dòng 2 ghi chữ số thứ 2
Kết quả: ghi ra file tên tự tạo tích của 2 số
mọi người kiểm tra bài hộ em theo yêu cầu số nhập vào có thể lên tới 5000 chữ số
Mã:
program Nhan;
type mang=array[1..5002] of byte;
var f,f1:text;
A,B,KQ,X,Y:mang;
n1,k,h,j,i,n,m,blah:longint;
ch:char;
nham:boolean;
procedure nhap;
var k:integer;
i,j:longint;
tam:mang;
begin
assign(f,'so.inp'); assign(f1,'so.out');
reset(f); rewrite(f1);
n:=0; m:=0;
while eoln(f)<>true do
begin
n:=n+1; read(f,ch); val(ch,a[n],k);
end;
n1:=n;
readln(f);
while eoln(f)<>true do
begin
m:=m+1; read(f,ch); val(ch,b[m],k);
end;
blah:=m;
if m>n then
begin
tam:=A;
A:=B;
B:=tam;
i:=n;
n:=m;
m:=i;
n1:=n;
blah:=m;
end;
end;
function dao(tam:mang;dai:longint):mang;
var i,j:longint;
c:mang;
begin
j:=0; c:=tam;
for i:=dai downto 1 do
begin
j:=j+1; c[i]:=tam[j];
end;
dao:=c;
end;
function nhan(so:byte;kt:integer):mang;
var i,nho,j,dem:longint;
C,D:mang;
begin
for i:=1 to n1 do C[i]:=so*A[i];
for i:=1 to n1 do
begin
D[i]:=C[i] mod 10;
nho:=C[i] div 10;
C[i+1]:=C[i+1]+nho;
if i=n1 then
if (C[i] div 10<>0) then
begin
D[i+1]:=C[i] div 10;
n:=i+1;
end
else
begin
n:=i;
end;
end;
if kt<>0 then
begin
D:=dao(D,n);
i:=n;dem:=0;
repeat
i:=i+1;
D[i]:=0;
dem:=dem+1;
until dem=kt;
D:=dao(D,n+kt);
end;
n:=n+kt;
nhan:=D;
end;
function cong(G:mang;H:mang;dai:longint):mang;
var i,j:longint;
C:mang;
begin
i:=0;
repeat
i:=i+1;
C[i]:=G[i]+H[i];
until i=dai;
cong:=C;
end;
function xuli(C:mang;dai:integer):mang;
var i,nho:longint;
D:mang;
begin
nho:=0;
for i:=1 to dai do
begin
if i<>dai then
begin
D[i]:=C[i] mod 10;
nho:=C[i] div 10;
C[i+1]:=C[i+1]+nho;
end
else
begin
D[i]:=C[i];
end;
end;
xuli:=D;
end;
begin
nhap;
A:=dao(A,n);
for k:=1 to 5002 do
begin
kq[k]:=0;
X[k]:=0;
Y[k]:=0;
end;
B:=dao(B,m);
j:=0;
repeat
j:=j+1;
if B[j]<>0 then
begin
Y:=nhan(B[j],j-1); B[j]:=0;
end
else for k:=1 to 5002 do Y[k]:=0;
KQ:=xuli(cong(KQ,Y,n),n);
until (j=blah);
kq:=dao(kq,n);
for i:=1 to n do write(f1,KQ[i]);
writeln(f1);
close(f1);
end.