Страница 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.