![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() ![]() |
![]() |
T@ty@n@ |
![]()
Сообщение
#1
|
Гость ![]() |
М
![]() 1. дано натуральное к.напечатать к-ю цифру последовательности 12345678910111213, в которой выписаны подряд все натуральные числа. 2. дан текст.определить является ли он правильной десятичной записью целого числа. Сообщение отредактировано: T@ty@n@ - 12.06.2007 17:59 |
klem4 |
![]()
Сообщение
#2
|
|||
![]() Perl. Just code it! ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 4 100 Пол: Мужской Реальное имя: Андрей Репутация: ![]() ![]() ![]() |
Хм, второе, последнее предупреждение
-------------------- perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
|
|||
volvo |
![]()
Сообщение
#3
|
Гость ![]() |
Ну, тему все одно за нарушение Правил закроют... Кстати, Поиск тоже неплохо использовать:
1) Олимпиадные задачи. Вторая задача тоже решалась... |
klem4 |
![]()
Сообщение
#4
|
![]() Perl. Just code it! ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 4 100 Пол: Мужской Реальное имя: Андрей Репутация: ![]() ![]() ![]() |
Мой вариант первой задачи:
function DigitInfo(const k: LongInt): Char; T@ty@n@ Переименуй название темы ... -------------------- perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
|
hardcase |
![]()
Сообщение
#5
|
![]() code warrior ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 484 Пол: Мужской Реальное имя: Славен Репутация: ![]() ![]() ![]() |
Мой вариант первой задачи: А это мой. Только целочисленная арифметика и никаких str. ![]() Код function GetDigit(k: integer): integer; var counter: integer; // счетчик натуральных чисел number: integer; // текущее разбираемое число needNewNumber: boolean; // флаг - "завершился ли разбор числа?" maxDecimalMask: integer; // максимальная маска десятичного разряда nextDecimalMask: integer; // maxDecimalMask * 10 decimalMask: integer; // текущая маска десятичного разряда procedure Init; begin counter := 0; maxDecimalMask := 1; nextDecimalMask := maxDecimalMask * 10; needNewNumber := true; end; function GetNextDigit: integer; var digit: integer; begin // получаем следующее натуральное число if needNewNumber then begin needNewNumber := false; inc(counter); number := counter; if (counter mod nextDecimalMask) = 0 then begin maxDecimalMask := nextDecimalMask; nextDecimalMask := maxDecimalMask * 10; end; // сбрасываем маску decimalMask := maxDecimalMask; end; // получаем число в разряде digit := number div decimalMask; number := number mod decimalMask; decimalMask := decimalMask div 10; // если маска нулевая, то мы разобрали число if decimalMask = 0 then needNewNumber := true; // возвращаем результат GetNextDigit := digit; end; var i: integer; digit: integer; begin Init; // тупо перебираем k-разрядов digit := 0; for i := 1 to k do digit := GetNextDigit; // возращаем результат GetDigit := digit; end; но с инвариантом ессно красивше получается. Сообщение отредактировано: hardcase - 13.06.2007 1:36 -------------------- ИзВ ин ИтЕ зА нЕ рОв НЫй П оч ЕРк
|
klem4 |
![]()
Сообщение
#6
|
![]() Perl. Just code it! ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 4 100 Пол: Мужской Реальное имя: Андрей Репутация: ![]() ![]() ![]() |
У мну тоже без строк легко можно ...
round(exp((digit_len - 1) * ln(10))) + digit_owner_number - 1- это число*, содержаще нужную цифру (при к = 188 или 189 число соодержащее цифру с номером к = 99) digit_len- количество разрядов в этом числе (2-3-4-5 значное) k - (digit_pred_group + digit_len * (digit_owner_number - 1) + 1) + 1- номер нужного разряда из этого числа*, я просто для удобства число в строку перевел в конце ... ;) Может кто еще решения предложит ? Интересная задачка ![]() Сообщение отредактировано: klem4 - 13.06.2007 7:50 -------------------- perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
|
Malice |
![]()
Сообщение
#7
|
![]() Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 705 Пол: Мужской Репутация: ![]() ![]() ![]() |
Может кто еще решения предложит ? Интересная задачка ![]() Не догнал с похмелья почему нельзя сделать в лоб ![]() function test (x:longint): char; Проверка.. for i:=1 to 1000 do write (test(i)); ps без str - + div и mod. |
klem4 |
![]()
Сообщение
#8
|
![]() Perl. Just code it! ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 4 100 Пол: Мужской Реальное имя: Андрей Репутация: ![]() ![]() ![]() |
да уж))
![]() -------------------- perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
|
hardcase |
![]()
Сообщение
#9
|
![]() code warrior ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 484 Пол: Мужской Реальное имя: Славен Репутация: ![]() ![]() ![]() |
Не догнал с похмелья почему нельзя сделать в лоб ![]() Все познается в сравнении. Как оно показало - сидение за компом до 3 ночи (я) и похмелье (Malice) ни к чему хорошему не приводят. Решения "в лоб" редко бывают выигрышными. Файло в аттаче - консоль на Делфи, сравнивает решения так как мы их запостили на форум. kelm4 рвет всех ![]() Прикрепленные файлы ![]() -------------------- ИзВ ин ИтЕ зА нЕ рОв НЫй П оч ЕРк
|
volvo |
![]()
Сообщение
#10
|
Гость ![]() |
hardcase, а ВСЕ решения нельзя было потестить?
![]() |
klem4 |
![]()
Сообщение
#11
|
![]() Perl. Just code it! ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 4 100 Пол: Мужской Реальное имя: Андрей Репутация: ![]() ![]() ![]() |
Цитата По ссылке в 3-ем посте есть еще 2, кстати. Ну один из них точно не прокатит, ибо там ограничение на длину строки ... Цитата Файло в аттаче - консоль на Делфи, сравнивает решения так как мы их запостили на форум. kelm4 рвет всех Неожиданно приятно ![]() ps никнейм мой чуть-чуть по другому пишется ![]() -------------------- perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
|
volvo |
![]()
Сообщение
#12
|
Гость ![]() |
Андрей, есть просьба: то решение, которое я приводил - было ошибочным, вот корректно работающая версия:
function get_digit(n: longint): char; исправь в топике "Олимпиадные задачи"... Сообщение отредактировано: volvo - 13.06.2007 19:23 |
мисс_граффити |
![]()
Сообщение
#13
|
![]() просто человек ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 3 641 Пол: Женский Реальное имя: Юлия Репутация: ![]() ![]() ![]() |
Все, конечно, очень мило, но правила есть правила.
T@ty@n@ внимания на них (и на предупреждения) не обращает. Тема закрыта... -------------------- Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения! |
![]() ![]() |
![]() |
Текстовая версия | 20.07.2025 19:31 |