помогите!, паскаль |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
помогите!, паскаль |
T@ty@n@ |
Сообщение
#1
|
Гость |
М может кто занет как решать эти задачи, а то зачет не могу сдать.
1. дано натуральное к.напечатать к-ю цифру последовательности 12345678910111213, в которой выписаны подряд все натуральные числа. 2. дан текст.определить является ли он правильной десятичной записью целого числа. Сообщение отредактировано: T@ty@n@ - |
klem4 |
Сообщение
#2
|
|||
Perl. Just code it! Группа: Пользователи Сообщений: 4 100 Пол: Мужской Реальное имя: Андрей Репутация: 44 |
Хм, второе, последнее предупреждение
-------------------- perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
|
|||
volvo |
Сообщение
#3
|
Гость |
Ну, тему все одно за нарушение Правил закроют... Кстати, Поиск тоже неплохо использовать:
1) Олимпиадные задачи. Вторая задача тоже решалась... |
klem4 |
Сообщение
#4
|
Perl. Just code it! Группа: Пользователи Сообщений: 4 100 Пол: Мужской Реальное имя: Андрей Репутация: 44 |
Мой вариант первой задачи:
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 Пол: Мужской Реальное имя: Славен Репутация: 8 |
Мой вариант первой задачи: А это мой. Только целочисленная арифметика и никаких 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 - -------------------- ИзВ ин ИтЕ зА нЕ рОв НЫй П оч ЕРк
|
klem4 |
Сообщение
#6
|
Perl. Just code it! Группа: Пользователи Сообщений: 4 100 Пол: Мужской Реальное имя: Андрей Репутация: 44 |
У мну тоже без строк легко можно ...
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 - -------------------- perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
|
Malice |
Сообщение
#7
|
Профи Группа: Пользователи Сообщений: 705 Пол: Мужской Репутация: 20 |
Может кто еще решения предложит ? Интересная задачка Не догнал с похмелья почему нельзя сделать в лоб : 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 Пол: Мужской Реальное имя: Андрей Репутация: 44 |
да уж))
-------------------- perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
|
hardcase |
Сообщение
#9
|
code warrior Группа: Пользователи Сообщений: 484 Пол: Мужской Реальное имя: Славен Репутация: 8 |
Не догнал с похмелья почему нельзя сделать в лоб Все познается в сравнении. Как оно показало - сидение за компом до 3 ночи (я) и похмелье (Malice) ни к чему хорошему не приводят. Решения "в лоб" редко бывают выигрышными. Файло в аттаче - консоль на Делфи, сравнивает решения так как мы их запостили на форум. kelm4 рвет всех Прикрепленные файлы SlnComp.txt ( 3.78 килобайт ) Кол-во скачиваний: 291 -------------------- ИзВ ин ИтЕ зА нЕ рОв НЫй П оч ЕРк
|
volvo |
Сообщение
#10
|
Гость |
hardcase, а ВСЕ решения нельзя было потестить? По ссылке в 3-ем посте есть еще 2, кстати.
|
klem4 |
Сообщение
#11
|
Perl. Just code it! Группа: Пользователи Сообщений: 4 100 Пол: Мужской Реальное имя: Андрей Репутация: 44 |
Цитата По ссылке в 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
|
просто человек Группа: Пользователи Сообщений: 3 641 Пол: Женский Реальное имя: Юлия Репутация: 55 |
Все, конечно, очень мило, но правила есть правила.
T@ty@n@ внимания на них (и на предупреждения) не обращает. Тема закрыта... -------------------- Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения! |
Текстовая версия | 23.12.2024 21:14 |