Как сделать, чтобы он выводил кроме коэффициетов еще и числовые значения?
число 31.
последовательность до него-
1>2>3>5>8>13>21.
берется число 21, оно уже автоматически попадает, так как меньше 31
остаток 10. 10 сравниваем с 13, число 13 отпадает. 10 сравниваем с 8, берем, остаток 2. и сравнивая с 2, получим остаток 0.
в итоге, если использовать 0 и 1:
1*21+0*13+1*8+0*5+0*3+1*2+0*1. т.е. 31=21+8+2
работает-то правильно. но хотелось бы, чтобы он выводил это еще и суммой, и чтобы в самом начале отображал саму последовательность
|
Код:
|
program fibo;
{$APPTYPE CONSOLE}
uses
SysUtils;
Var
i,n,x,s,m,a:integer;
f:string;
p:boolean;
begin
Writeln('vvedite chislo');
readln(x);
p:=true;
while x<>0 do
begin
n:=1;
s:=0;
i:=0;
while n<x do
begin
s:=s+n;
n:=s+n;
inc(i,2);
end;
if x<=s then
begin
x:=x-(n-s);
dec(i,2);
end
else
if x=n then
x:=x-n
else
begin
x:=x-s;
dec(i,1);
end;
if p then
begin
a:=i;
f:='1';
for m:=2 to i do
begin
f[m]:='0';
f:=f+f[m];
end;
p:=false
end
else
begin
delete(f,a-i,1);
insert('1',f,a-i+1);
end;
end;
writeln('pol chislo' ,f);
readln;
end. |