Страница 1 из 1

Программирование алгоритмов циклической структуры. Не очень сложная.

Добавлено: 20 дек 2007, 19:50
Marvell
Для заданного K, вычислить K-тую цифру последовательности
2 4 6 8 1 0 1 2 1 4 1 6 1 8 2 0 2 2 2 4 2 6 2 8 3 0 ...
(Записаны подряд все четные натуральные числа)
проблема в том, что когда мы например берем 5-ый элемент то должно показывать не 10, а 1, если 6-ой, то 0 и т.д.

Re: Программирование алгоритмов циклической структуры. Не очень сложная.

Добавлено: 21 дек 2007, 00:22
somewhere
Рассмотрев структуру последовательности можно заметить, что:
К=от 0 до 4, однозначные числа
К=от 5 до 5 + 45*2 - двузначные
К=от 95 до 95 + 450*3 - трехзначные и т.д.
Это дает возможность по значению К вычислить само число, а потом уже взять конкретную цифру этого числа. Возможно есть способ проще и элегантнее но в это время суток что-то в голову ничего не прет...

Код: Выделить всё

uses crt;

var k, ei, b, bi, m : integer;
                  s : string;

begin
Clrscr; ei := 5; b := 1; m := 1;
Readln(k);
if k < 5 then
   begin
   Writeln(k*2);
   Halt(0);
   end;
while (k>=ei) do
   begin
   inc(m);
   bi := ei;
   ei := ei + 45*b*m;
   b := b * 10;
   end;
Str(b + ((k-bi) div m)*2, s);
Writeln('Element is a part of number : ',s);
Writeln('Element = ',s[1 + (k-bi) mod m]);
end.