IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

> ПРОГРАММА НА ПАСКАЛЕ, КВАДРАТЫ
сообщение
Сообщение #1


Гость






ПОМОГИТЕ РЕШИТЬ НА ПАСКАЛЕ
Бесконечная последовательность цифр составлена из записанных друг за другом квадратов всех натуральных чисел, начиная с единицы: 149162536…… Требуется определить, какая цифра находится на k- месте в этой последовательности.
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
сообщение
Сообщение #2


Perl. Just code it!
******

Группа: Пользователи
Сообщений: 4 100
Пол: Мужской
Реальное имя: Андрей

Репутация: -  44  +


один из вариантов
uses crt;

function digit(value: LongInt; digit_num: Byte): Byte;
begin
while digit_num > 0 do begin
value := value div 10;
dec(digit_num);
end;
digit := value mod 10;
end;

function DigitsCount(n: LongInt): Byte;
var
count: Byte;
begin
count := 0;

while n > 0 do begin
inc(count);
n := n div 10;
end;

DigitsCount := count;
end;

function GetDigit(const k: LongInt): LongInt;
var
s, i: LongInt;
begin
s := 1;
i := 2;

while (s < k) do begin
s := s + DigitsCount(i * i);
i := i + 1;
end;

GetDigit := digit(pred(i) * pred(i), abs(s - k));
end;

var
k, i: LongInt;

begin

clrscr;

write('k = '); readln(k);

writeln('result = ', GetDigit(k));
writeln;

for i := 1 to 1000 do begin // можно увеличивать ... это для наглядности
if i = k then TextColor(Red) else TextColor(White);
write(GetDigit(i));
if i mod 70 = 0 then writeln;
end;
readln;
end.


--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Гость






Цитата(klem4 @ 10.11.2007 12:37) *

один из вариантов
uses crt;

function digit(value: LongInt; digit_num: Byte): Byte;
begin
while digit_num > 0 do begin
value := value div 10;
dec(digit_num);
end;
digit := value mod 10;
end;

function DigitsCount(n: LongInt): Byte;
var
count: Byte;
begin
count := 0;

while n > 0 do begin
inc(count);
n := n div 10;
end;

DigitsCount := count;
end;

function GetDigit(const k: LongInt): LongInt;
var
s, i: LongInt;
begin
s := 1;
i := 2;

while (s < k) do begin
s := s + DigitsCount(i * i);
i := i + 1;
end;

GetDigit := digit(pred(i) * pred(i), abs(s - k));
end;

var
k, i: LongInt;

begin

clrscr;

write('k = '); readln(k);

writeln('result = ', GetDigit(k));
writeln;

for i := 1 to 1000 do begin // можно увеличивать ... это для наглядности
if i = k then TextColor(Red) else TextColor(White);
write(GetDigit(i));
if i mod 70 = 0 then writeln;
end;
readln;
end.


Спасибо!
 К началу страницы 
+ Ответить 

Сообщений в этой теме


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 8.05.2024 2:06
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name