Другие языки программирования и технологии

Задача в паскале начальный уровень

дано натуральное число k. Напечатать k-ю цифру последовательности 1123581321... в которой выписаны подряд все числа Фибоначчи (каждое последующее число равно сумме двух предыдущих). Использовать только if и case и циклы!!!! Если я правильно врубилась тут вложеный цикл нужен...
есть некоторые вопросы.
кое-что бы уточнил :)
(проверь почту)
Сергей Тифанов
Сергей Тифанов
873
Лучший ответ
Доброго времени суток.

Немного не так, Огненый лис. Требуется найти не k число в последовательности чисел Фибоначчи, а k цифру В приведенном примере 1123581321 третья цифра будет 2, четвертая - 3, седьмая - 1 и т. д. Задача состоит из двух частей, получение чисел Фибоначчи и, собственно, определение нужной цифры. Что в таком духе должно быть.

var
i, k, a, n, tmp : Longint;
F1, F2, F3 : Longint;
begin
Write('Введите число K: ');
ReadLn(k);
F1 := 1;
F2 := 1;

if k < 3 then begin {первые две цифры единицы}
WriteLn('K-тая цифра = 1');
ReadLn;
Exit;
end;

k := k - 2; {корректируем на две первые единицы}

{вычисляем число в котором требуется найти нужную цифру}
while k > 0 do begin
i := F1 + F2; F1 := F2; F2 := i;
a := 0; {количество разрядов очередного числа}
tmp := i;
while tmp > 0 do begin {считаем количество цифр в числе}
tmp := tmp div 10; {делим на 10}
a := a + 1; {и подсчитываем число делений}
end;
k := k - a; {вычитаем из заданного числа разрядов}
end;

{если k отрицательное, то искомая цифра находится левее}
while k <> 0 do begin
i := i div 10; {сдвигаемся на нужный разряд}
k := k + 1;
end;
tmp := i mod 10; {получаем значение цифры}

WriteLn('K-тая цифра = ', tmp );
ReadLn;
end.

Удачи!
Илья Кобылось
Илья Кобылось
59 613
Bazarbay Husainov А, понял) не внимательно прочитал условие))
Program p1;
Var
k,i : Integer;
F_1,F_2,F_3 : Longint;
Begin
Readln(k);
F_1:=1;
F_2:=1;
For i:=1 to k do
Begin
F_3:=F_2+F_1;
F_1:=F_2;
F_2:=F_3;
End;
Write(F_3,' ');
Writeln();
End.

Могли бы и сами написать её, программа очень легкая!
тут нада знать как числа фибоначи без рекурсии считать. . сегодня точно не помогу =(
Ринат Мухаметзянов Program p1;
Var
k,i : Integer;
F_1,F_2,F_3 : Longint;
Begin
Readln(k);
F_1:=1;
For i:=1 to k do
Begin
If(i=1)
Then
F_2:=F_1;
F_3:=F_2+F_1;
F_1:=F_2;
F_2:=F_3;
Write(F_3,' ');
End;
Writeln();
End.