PDA

View Full Version : giúp mình với pascal



vothan16
18-11-2009, 21:24
Bài 1: Viết chương trình nhập từ bàn phím số nguyên dương N(N nhỏ hơn hoặc bằng 100) và dãy A gồm N số nguyên dương A1,A2, A3, A4,......,An.có giá trị tuyệt đối không lớn hơn 1000 .Hãy đưa ra những thông tin sau :
1)Số lượng số chẵn và số lẻ trong dãy?
2)Số lượng số nguyên tố trong dãy?

Bài 2: Dãy F là dãy Phi bô na xi nếu:
F_0=0; F1=1; F_n=F_(n-1)+F_(n-2) với N lớn hơn hoặc bằng 2
Viết chương trình nhập từ bàn phím số nguyên dương N và đưa ra màn hình số hạng thứ N của dãy Phi bô na xi .Chương trình của bạn thực hiện được với giá trị lớn nhất của N là bao nhiêu?
Bai3: Viết chương trình nhập từ bàn phím xâu kí tự S có độ dài không quá 100 .Hãy cho biết có bao nhiêu chữ số xuất hiện trong sâu S .Thông báo kết quả ra màn hình ?

sử dụng dữ liệu có cấu trúc

technolt
20-11-2009, 04:34
Bài 1,3 dễ rồi còn j` :-??
Bài 2
Với thời gian chạy 1s,nếu làm O(N) thì được đến khoảng N = 50 triệu
Nếu làm nhân ma trận, O(log N) thì bạn lưu được N lớn đến bao nhiêu cũng chạy nháy mắt :))

than_nu
24-11-2009, 11:22
Bài 1,3 dễ rồi còn j` :-??
Bài 2
Với thời gian chạy 1s,nếu làm O(N) thì được đến khoảng N = 50 triệu
Nếu làm nhân ma trận, O(log N) thì bạn lưu được N lớn đến bao nhiêu cũng chạy nháy mắt :))

Mình ko bik cách nhân ma trận của cậu (mới nghe lần đầu ^^), bạn có thể trình bài rõ hơn ko
@ chủ topic, bài 1, 3 đúng là dễ, còn bài 2 mình làm QHĐ, chạy Free Pascal thì thả cửa rồi, tùy bộ nhớ ngoài, vấn đề là xây dựng phép cộng 2 số lớn.

nhokdragon94
24-11-2009, 19:44
Bài 1,3 dễ rồi còn j` :-??
Bài 2
Với thời gian chạy 1s,nếu làm O(N) thì được đến khoảng N = 50 triệu
Nếu làm nhân ma trận, O(log N) thì bạn lưu được N lớn đến bao nhiêu cũng chạy nháy mắt :))

Bạn nói dễ nhưng đối với bạn vothan có dễ đâu :D, nếu bạn ấy biết làm thì cần chi hỏi trên forum nưa phải hem. :)
Ban vothan16 code nà:

bai1:
var A:array[1..100] of integer;
d,i,j,n,chan,le:integer;
begin
Nhập mảng,xuất mảng(cái này bạn tự làm nha);
chan:=0;le:=0;
for i:=1 to n do
If A[i] mod 2=1 then le:=le+1
else chan:=chan+1;
writeln('so luong so chan: ',chan:5,'so luong so le: ',le:5);

for i:=1 to n do
begin
d:=0;
for j:=2 to n div 2 do
If A[i] mod j=0 then d:=d+1;
If d=0 then ngto:=ngto+1;
end;
writeln('so luong so ngto: ',ngto);
readln;
end.

bai2:
var F:array[1..100] of integer;
i:integer;
begin
writeln('nhap n= ');readln(n);
F[0]:=0;F[1]:=1;
for i:=2 to n do
F[i]:=F[i-1]+F[i-2];
writeln('gia tri thu n: ',F[n]:5);
(Còn cái g/trị lớn nhất của n j` đó mình chưa hỉu cái đề :P);
readln;
end.

bai3:
begin
readln(S);
for i:=1 to length(S) do
If S[i]in['0'..'9'] then so:=so+1;
writeln('so la: ',so);
readln;
end.

Mình chưa test trên máy :D cóa j` sai thì pm cho minh ^^!