Lập chương trình nhập mảng 2 chiều m hàng n côt. tính và in ra màn hình tổng các phần tử có chỉ số hàng chẵn, chỉ số cột lẹ M, N được nhập từ bàn phím.
Tìm hiểu các giải thuật sắp xếp cơ bản trên cấu trúc dữ liệu mảng Tìm hiểu các giải thuật tìm kiếm cơ bản trên cấu trúc dữ liệu mảng Đánh giá ...GiaiThuat.Com
Thứ Sáu, 24 tháng 2, 2012
Đảo ngược mảng 1 chiều
Dãy Tribonacci
Dãy Tribonacci là dãy 1 , 1 , 2 , 3 , 7 , 13 , 24... dãy này được sinh ra bới công thức đệ qui sau :
Tr(1) = 1 , Tr(2) = 1 , Tr(3) = 2 , Tr(k) = Tr(k-1)+Tr(k-2)+Tr(k-3) ... với 3< k <37
Mọi số tự nhiên N đều có thể biểu diễn duy nhất dưới dạng tổng của một số số trong dãy Tribonacci.
VD: 17 = 13 + 4; 30 = 24 + 4 + 2;
Cho trước số tự nhiên N nhập từ bàn phím. Viết chương trình tìm biểu diễn Tribonacci của số N.
Ý tưởng: Xây dựng 1 mảng số Tribonacci từ 1 tới 37 (đến 37 vì theo đề bài ...), rồi duyệt từng phần tử của dãy Tribonacci, nếu n> Tribonacci[i] thì in ra Tribonacci[i] và giảm n tới khi n<0 thì thôi.
Uses crt;
Const
max=37;
Var
a:array[1..max] of longint;
n,i:longint;
BEGIN
Clrscr;
a[1]:=1; a[2]:=1; a[3]:=2;
For i:=4 to max do
a[i]:=a[i-1]+a[i-2]+a[i-3];
Write('Nhap so n:'); readln(n);
i:=max;
While a[i]>n do i:=i-1;
Write(n,'=',a[i]);
n:=n-a[i];
While n>0 do
Begin
i:=i-1;
If n>=a[i] then
Begin
Write('+',a[i]);
n:=n-a[i];
End;
End;
Readln;
END.
Tr(1) = 1 , Tr(2) = 1 , Tr(3) = 2 , Tr(k) = Tr(k-1)+Tr(k-2)+Tr(k-3) ... với 3< k <37
Mọi số tự nhiên N đều có thể biểu diễn duy nhất dưới dạng tổng của một số số trong dãy Tribonacci.
VD: 17 = 13 + 4; 30 = 24 + 4 + 2;
Cho trước số tự nhiên N nhập từ bàn phím. Viết chương trình tìm biểu diễn Tribonacci của số N.
Ý tưởng: Xây dựng 1 mảng số Tribonacci từ 1 tới 37 (đến 37 vì theo đề bài ...), rồi duyệt từng phần tử của dãy Tribonacci, nếu n> Tribonacci[i] thì in ra Tribonacci[i] và giảm n tới khi n<0 thì thôi.
Uses crt;
Const
max=37;
Var
a:array[1..max] of longint;
n,i:longint;
BEGIN
Clrscr;
a[1]:=1; a[2]:=1; a[3]:=2;
For i:=4 to max do
a[i]:=a[i-1]+a[i-2]+a[i-3];
Write('Nhap so n:'); readln(n);
i:=max;
While a[i]>n do i:=i-1;
Write(n,'=',a[i]);
n:=n-a[i];
While n>0 do
Begin
i:=i-1;
If n>=a[i] then
Begin
Write('+',a[i]);
n:=n-a[i];
End;
End;
Readln;
END.
Số hoàn thiện
Một số có tỗng các ước nhỏ hơn nó bằng chính nó dc gọi là số hoàn chỉnh.VD 6 có ước nhỏ hơn nó là 1,2,3. Tổng là 1+2+3=6.Viết chương trình xét xem một số n dược nhập từ bàn phím có phải là số hoàn chỉnh không.
PROGRAM hoanthien;
VAR n:INTEGER;
FUNCTION kiemtra(x:INTEGER):BOOLEAN;
VAR tam,i:INTEGER;
BEGIN
tam:=0; kiemtra:=FALSE;
FOR i:= 1 TO (x DIV 2) DO
IF x MOD i = 0 THEN tam:=tam+i;
IF tam = x THEN kiemtra:=TRUE;
END;
BEGIN
writeln('Nhap so can kiem tra ');
readln(n);
IF kiemtra(n) THEN writeln('So ',n,' la so hoan thien')
ELSE
writeln('So ',n,' khong phai la so hoan thien');
readln;
END.
PROGRAM hoanthien;
VAR n:INTEGER;
FUNCTION kiemtra(x:INTEGER):BOOLEAN;
VAR tam,i:INTEGER;
BEGIN
tam:=0; kiemtra:=FALSE;
FOR i:= 1 TO (x DIV 2) DO
IF x MOD i = 0 THEN tam:=tam+i;
IF tam = x THEN kiemtra:=TRUE;
END;
BEGIN
writeln('Nhap so can kiem tra ');
readln(n);
IF kiemtra(n) THEN writeln('So ',n,' la so hoan thien')
ELSE
writeln('So ',n,' khong phai la so hoan thien');
readln;
END.
Đếm số nguyên tổ trong mảng 1 chiều
Trong bài viết trước, Code Pascal đã giới thiệu cách xác định tính nguyên tố của 1 số được nhập vào từ bàn phím. Mở rộng đề bài ra thành đếm số nguyên tố trong dãy số N được nhập vào từ bàn phím cũng không quá khó.
Có rất nhiều cách để giải bài toán này, cách dưới đây tuy không bám sát vào cách làm trong bài viết Kiểm tra số nguyên tổ trong pascal nhưng cũng khá dễ hiểu.
Có rất nhiều cách để giải bài toán này, cách dưới đây tuy không bám sát vào cách làm trong bài viết Kiểm tra số nguyên tổ trong pascal nhưng cũng khá dễ hiểu.
var i,j,n:Integer;
A:array[1..50] of Integer;
begin
write('nhap n:');
readln(n);
for i:=1 to n do
begin
write('nhap a[',i,'] ');
readln(a[i]);
end;
j:=1;
for i:=1 to n do
if a[i]>1 then
begin
repeat
inc(j);
until (a[i] mod j=0);
if j>(a[i] div 2) then inc(d);
j:=1;
end;
write('Co ',d,' so ngto trog day');
readln;
end.
Kiểm tra số nguyên tổ trong pascal
Nhập vào 1 số. Xác định xem số đó có phải số nguyên tố hay không.
Đây là một bài toán rất căn bản trong Pascal. Ý tưởng: Số nguyên tố là số chia cho 1 và chính nó. Giả sử số vừa nhập vào là n, ta cho i chạy từ 2 đến n-1, nếu n chia hết cho i trong bất cứ lần lặp nào thì có nghĩa là n không nguyên tố, nếu không chia hết cho bất cứ lần lặp nào là nguyên tố. Về nguyên tắc là như vậy, nhưng người ta đã chứng minh được rằng chỉ cần xét từ 1 đến phần nguyên căn 2 của N. Như thế thuật toán sẽ tối ưu hơn.
program kiem_tra_nguyen_to;
uses crt;
var n,i:integer; bl:boolean;
begin
clrscr;
bl:=true;
write('nhap vao so can kiem tra tinh nguyen to: '); readln(n);
if n<=1 then bl:=false;
for i:=2 to trunc(sqrt(n)) then
if n mod i=0 then bl:=false;
if bl=true then write('so vua nhap nguyen to.')
else write('so vua nhap khong nguyen to.');
readln;
end.
Bouns: Chứng minh: Chỉ cần xét từ 1 đến phần nguyên căn 2 của N thay vì xét đến N:
Đây là một bài toán rất căn bản trong Pascal. Ý tưởng: Số nguyên tố là số chia cho 1 và chính nó. Giả sử số vừa nhập vào là n, ta cho i chạy từ 2 đến n-1, nếu n chia hết cho i trong bất cứ lần lặp nào thì có nghĩa là n không nguyên tố, nếu không chia hết cho bất cứ lần lặp nào là nguyên tố. Về nguyên tắc là như vậy, nhưng người ta đã chứng minh được rằng chỉ cần xét từ 1 đến phần nguyên căn 2 của N. Như thế thuật toán sẽ tối ưu hơn.
program kiem_tra_nguyen_to;
uses crt;
var n,i:integer; bl:boolean;
begin
clrscr;
bl:=true;
write('nhap vao so can kiem tra tinh nguyen to: '); readln(n);
if n<=1 then bl:=false;
for i:=2 to trunc(sqrt(n)) then
if n mod i=0 then bl:=false;
if bl=true then write('so vua nhap nguyen to.')
else write('so vua nhap khong nguyen to.');
readln;
end.
Bouns: Chứng minh: Chỉ cần xét từ 1 đến phần nguyên căn 2 của N thay vì xét đến N:
Lấy ví dụ số không nguyên tố:
9=3*3
12=3*4
18=2*9=3*6
20=4*5=2*10
trong các ví dụ trên, các số không nguyên tố được phân tích thành tích các cặp ước của chúng, trong mỗi cặp số nhỏ đứng trước, số lớn đứng sau. Trong mỗi cặp, ta có thể thấy rõ một điều: số đứng trước (nhỏ hơn) luôn luôn nhỏ hơn hoặc bằng căn bậc hai của số cần xét. Ví dụ ta thấy 20=4*5, rõ ràng 4 nhỏ hơn căn bậc hai của 20. Bạn tự xét các ví dụ khác nhé. Có thể chứng minh được điều này bằng toán học như sau:
Chứng minh: Gọi số cần xét là n, căn bậc hai của nó là x, hai ước tương ứng có tích bằng n của nó là a và b(a<>b), ta cần chứng minh a<x hoặc b<x. Vì a và b có vai trò tương đương, nên ta giả sử a<b.
Giả sử a>x và b>x, ta có a*b>x*x=n => trái với giải thiết. Vậy trong hai số a và b, phải có một số nhỏ hơn x.
12=3*4
18=2*9=3*6
20=4*5=2*10
trong các ví dụ trên, các số không nguyên tố được phân tích thành tích các cặp ước của chúng, trong mỗi cặp số nhỏ đứng trước, số lớn đứng sau. Trong mỗi cặp, ta có thể thấy rõ một điều: số đứng trước (nhỏ hơn) luôn luôn nhỏ hơn hoặc bằng căn bậc hai của số cần xét. Ví dụ ta thấy 20=4*5, rõ ràng 4 nhỏ hơn căn bậc hai của 20. Bạn tự xét các ví dụ khác nhé. Có thể chứng minh được điều này bằng toán học như sau:
Chứng minh: Gọi số cần xét là n, căn bậc hai của nó là x, hai ước tương ứng có tích bằng n của nó là a và b(a<>b), ta cần chứng minh a<x hoặc b<x. Vì a và b có vai trò tương đương, nên ta giả sử a<b.
Giả sử a>x và b>x, ta có a*b>x*x=n => trái với giải thiết. Vậy trong hai số a và b, phải có một số nhỏ hơn x.
Dựa vào đặc điểm trên, ta sẽ giới hạn phạm vi của i là 2->n-1 thành 2->sqrt(n). Tuy nhiên, sqrt(n) với n không chính phương sẽ ra số vô tỉ, trong khi i là số nguyên, vậy cần làm tròn sqrt(n). Phạm vi mới sẽ là 2->trunc(sqrt(n)).
Thứ Năm, 23 tháng 2, 2012
In bảng cửu chương
Đăng ký:
Nhận xét (Atom)
Bài đăng phổ biến
-
Cách Sửa lỗi Font AOE khó chịu bằng một số thủ thuật khá đơn giản Copy Font vào mục Font của Windows : http://www.mediafire.com/download/mdd...
-
Cách Boot USB đối với Main Gigabyte Để boot từ main gigabye bạn xem main của bạn có hỗ trợ không: nhấn ESC, DEL, F12...tùy từng máy bạn nên ...
-
Ugandatravel.Xyz Ukattorney.Xyz Ukhotel.Xyz Uklawyers.Xyz Uklawyer.Xyz Ukonline.Xyz Ukrainehome.Xyz Ukrainehotel.Xyz Ukraineinsurance.Xyz U...
-
Hướng dẫn mở UEFI cho Dell N4110 và Vostro 3750 Tình cờ hôm nay ghé sang 1 số diễn đàn của Nga và Bios Mod mình đã tìm được cách Unlocked UE...
-
BritainTourist .Com PhumyGroup.com SonhaiGroup.com LiaoningGroup .Com S haanxiGroup .com EchinaTourist.com T echnologyJewelry ....
-
Tagfacepaint.Xyz Taiwanonline.Xyz Taiwanworld.Xyz Tamnhin.Xyz Tamthan.Xyz Tangtruong.Xyz Tapchidulich.Xyz Tapdoan.Xyz Taphuan.Xyz Tappham.X...
-
Walmartscholarship.Xyz Wapnews.Xyz Waponline.Xyz Wapworld.Xyz Washingtonattorney.Xyz Washingtonhome.Xyz Washingtoninsurance.Xyz Washingtonl...
-
Vacationnews.Xyz Vacationsnews.Xyz Vacationsworld.Xyz Vantagecreditunion.Xyz Venturenews.Xyz Ventureworld.Xyz Vermontattorney.Xyz Vermontho...
-
Sachmoi.Xyz Salenews.Xyz Salesnews.Xyz Salesworld.Xyz Saleworld.Xyz Samsungcomputers.Xyz Sanantonioattorney.Xyz Sanantoniohome.Xyz Sananton...
-
SacomGold.com mnTourist.com Anbaoco.com SacomFinance.com VinaElectronics.com LatviaNet.com NationalAirway.com SacomInsurance.com SacomHome.c...