Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 02.07.2013, 14:15   #21
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 16,219
По умолчанию

Подключил модуль Math, решение зачлось, то есть можно использовать модули. Код решения:

Код:
uses
  Math;

var
  n: Byte;

begin
  Reset(input, 'input.txt');
  Assign(output, 'output.txt');
  Read(n);

  write(exp(1):0:min(n,16));
  if n > 16 then
    write(353602875/power(10,25-n):0:0)

end.
Опять же 160 символов, меньше не получилось. Но в статистике показал количество используемой памяти примерно 1400 Кб, а в старом варианте было порядка 900 Кб. Если судить по этому показателю, то решение на 149 байт тоже использует примерно столько памяти, а значит весьма вероятно, что они там либо модуль Math использовали, либо еще какой, но какой-то модуль точно подключали.
Arigato вне форума Ответить с цитированием
Старый 02.07.2013, 15:21   #22
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

Delphi так съест, а как там в паскале с этим дело?
Код:
 write(exp(1):0:min(n,16),copy('353602875',1,n-16))
вместо
Код:
write(exp(1):0:min(n,16));
  if n > 16 then
    write(353602875/power(10,25-n):0:0)
139 получится?
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

Последний раз редактировалось Аватар; 02.07.2013 в 15:27.
Аватар вне форума Ответить с цитированием
Старый 02.07.2013, 15:39   #23
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

Цитата:
Сообщение от Аватар
Delphi так съест а как там в паскале с этим дело?
а что там в Паскале - никого не интересует, ибо для проверки решения на acmp.ru используется комплитор Delphi!!

Arigato, Аватар - ГЕНИАЛЬНО!!!
Снимаю шляпу!

позволю себе ваш код привести полностью:
Цитата:
Код:
uses
  Math;

var
  n: Byte;

begin
  Reset(input, 'input.txt');
  Assign(output, 'output.txt');
  Read(n);

  write(exp(1):0:min(n,16),copy('353602875',1,n-16))
end.
(139 байт)

p.s. имхо, надо срочно забрасывать данное решение на acmp.ru!!!
Serge_Bliznykov вне форума Ответить с цитированием
Старый 02.07.2013, 15:42   #24
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,285
По умолчанию

Про округление последней цифры, кажется, забыли (в последнем варианте)
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA на форуме Ответить с цитированием
Старый 02.07.2013, 15:45   #25
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

Цитата:
Про округление последней цифры
Yes it is
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 02.07.2013, 16:07   #26
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 16,219
По умолчанию

Цитата:
Сообщение от BDA Посмотреть сообщение
Про округление последней цифры, кажется, забыли (в последнем варианте)
Кстати, у них там на этой задаче 10 тестов, а вариантов ответов может быть 26, потому какие-то решения с ошибками могут пройти. Может даже и это без округления пройдет?

P.S. Провалилась на 4 тесте.

P.P.S. Есть еще такой вариант:

write(exp(1):0:min(n,16), 353602875/power(10,25-n):0:0)

Но он добавляет ноль в конце, если n<17, из-за этого ноля не засчитывается. Если придумать компактный способ избавиться от этого ноля...

Последний раз редактировалось Arigato; 02.07.2013 в 16:15.
Arigato вне форума Ответить с цитированием
Старый 03.07.2013, 01:57   #27
astecenko
Homo Interneticus
Форумчанин
 
Аватар для astecenko
 
Регистрация: 04.03.2011
Сообщений: 611
По умолчанию

В Вконтакте попросил автора короткого решения с acmp.ru рассказать о своем варианте решения или направить в "ту степь" на что Артак мне ответил:
Цитата:
Сразу скажу сокращать размер кода - пустая трата времени, лучше за это время изучить какой-нибудь алгоритм. А в этой задаче я экспериментировал с экспонентой и строками. И дам небольшую подсказку я использовал только одну переменную. Удачи в топе))
astecenko вне форума Ответить с цитированием
Старый 03.07.2013, 10:13   #28
Poma][a
Новичок
Джуниор
 
Регистрация: 11.10.2011
Сообщений: 3,882
По умолчанию

Цитата:
Сразу скажу сокращать размер кода - пустая трата времени, лучше за это время изучить какой-нибудь алгоритм. А в этой задаче я экспериментировал с экспонентой и строками. И дам небольшую подсказку я использовал только одну переменную. Удачи в топе))
А вот бы узнать были ли модули..

Код:
uses
  Math;

var
  n: Byte;

begin
  Reset(input, 'input.txt');
  Assign(output, 'output.txt');
  Read(n);

  write(exp(1):0:min(n,16),copy('353602875',1,n-17) +copy (' 454603985',n-15, 1))
end.
164
Poma][a вне форума Ответить с цитированием
Старый 03.07.2013, 21:23   #29
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 16,219
По умолчанию

Цитата:
Сообщение от astecenko Посмотреть сообщение
Сразу скажу сокращать размер кода - пустая трата времени
Ага, а сам ведь занимался этим... Тут чисто спортивный интерес, а не образовательный

Цитата:
Сообщение от Poma][a Посмотреть сообщение
А вот бы узнать были ли модули..
Судя по используемой памяти - были. У меня с модулем Math памяти 1428 Кб, у него - 1408.

Последний раз редактировалось Arigato; 03.07.2013 в 21:27.
Arigato вне форума Ответить с цитированием
Старый 03.07.2013, 23:12   #30
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 16,219
По умолчанию

Цитата:
Сообщение от Poma][a Посмотреть сообщение
164
Отличная идея! Я ее немного развил, да еще и учел то, что пробелы внутри строк тоже не считаются при подсчете длинны, вот что вышло:

Код:
var
  n: Byte;

begin
  Reset(input, 'input.txt');
  Assign(output, 'output.txt');
  Read(n);

  write(exp(1):0:n-n shr 4*(n-16),copy('35360287',1,n-17)+'                 454603985'[n+1])

end.
151. Осталось пару символов убрать
Arigato вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Оптимизация (сокращение) кода решения задачи #2 c acmp.ru - нахождение суммы целых чисел от 1 до N Serge_Bliznykov Помощь студентам 31 23.08.2014 22:35
Оптимизация кода задачи three_cats Общие вопросы C/C++ 7 28.09.2012 15:13
Написать программу, которая вычисляет приближенное значение числа e с заданной точностью quade1992 Паскаль, Turbo Pascal, PascalABC.NET 3 08.11.2011 15:10
Вычисление числа e, Pi с заданной точностью MrakSPb Общие вопросы C/C++ 3 12.05.2010 12:51
Оптимизация и сокращение кода (if + сдвиг) Alex Cones Общие вопросы Delphi 2 06.04.2010 21:37