Đến nội dung

Edogawa_Conan

Edogawa_Conan

Đăng ký: 20-12-2009
Offline Đăng nhập: 16-04-2011 - 12:14
-----

Trong chủ đề: Trao đổi kinh nghiệm giải các bài tập Pascal

15-04-2011 - 11:18

Bài 3:

3/(tin học trẻ TP Đà Nẵng năm 2010-THCS) Cho biết rằng với mọi số nguyên dương lớn hơn 2 đều có thể viết được thành tổng hữu hạn các số fibonacci khác nhau. Hãy tìm cách phân tích một số nguyên dương N (N>2) thành tổng các số fibonnaci khác nhau sao cho số số hạng là nhiều nhất.

program bt;
var s:string;
	nho,f:array[0..1000]of longint;
	v:array[1..1000]of boolean;
	n,t:longint;k,i,j,d:integer;
function fb(x:integer;i:integer):integer;
begin
for j:=1 to i do
if x=f[j] then
begin
fb:=j; break;
end
else fb:=0;
end;
begin
writeln('nhap n');
readln(n);
fillchar(v,sizeof(v),false);
s:='';f[0]:=1;f[1]:=1;i:=0;t:=0;d:=0;
while t<n do
begin
inc(i);
f[i]:=f[i-1]+f[i-2];k:=1;
while (n-t<f[i]) and (k<i) do
begin d:=fb(t+f[i]-n,i);
if d>0 then
begin
t:=t-f[d];v[d]:=false; end
else
begin
t:=t-f[i-k];v[i-k]:=false;
inc(k);
end;end;
if (n-t>=f[i])and(v[i]=false) then
begin
t:=t+f[i];v[i]:=true;
end;
end;
for j:=1 to i  do
if v[j]=true then
s:=chr(f[j]+48)+' + '+s;
delete(s,length(s),1);
writeln('so phan tich: ',s);
readln;
end.

Trong chủ đề: Help!

28-04-2010 - 14:52

Ừ A,B là 2 điểm nằm ngoài đường tròn hết và B bất kì. Mình đã trích y nguyên đề rồi đó.