Фон
Этот вызов вдохновлен этим сайтом, на котором опубликована следующая диаграмма:
Эта диаграмма показывает нам, что самое длинное римское числовое выражение до 250 - это 188, для выражения которого требуется 9 цифр.
Вызов
Стандартные символы , используемые для выражения наиболее римские цифры являются следующие: { I
, V
, X
, L
, C
, D
, M
}, где числовые значения характеров являются M
= 1000, D
= 500, C
= 100, L
= 50, X
= 10, V
= 5, I
= 1.
В этой задаче ваша цель состоит в том, чтобы, учитывая положительное целое число n , вычислить количество действительных представлений римских цифр, которые можно составить путем объединения n стандартных символов.
Затем ваша программа должна вывести результат этого вычисления!
Входные данные : положительное целое число n .
Выходные данные : количество действительных римских числовых выражений длины n .
Правила для римских числительных выражений
Римские цифры изначально имели только «аддитивное» спаривание, то есть цифры всегда записывались в порядке убывания, а сумма значений всех чисел была значением числа.
Позже, вычитание спаривания, использование размещения меньшего числа перед большим, чтобы вычесть меньшее из большего, стало обычным делом для сокращения выражений римскими цифрами. Субтрактивные пары не могут быть соединены, как показано в следующем недействительных выражение: IXL
.
Ниже приведены современные правила дня для аддитивного и вычитающего спаривания.
- Только один I, X и C может использоваться в качестве начального числа в части вычитающей пары.
- Я могу быть помещен перед V или X только в вычитающей паре.
- X может быть помещен только перед L или C в вычитающей паре.
- C может быть помещен только перед D или M в вычитающей паре.
- За исключением вычитающих пар, цифры должны быть в порядке убывания (это означает, что если вы отбросите ведущую цифру каждой вычитающей пары, то цифры будут в порядке убывания).
- М, С и Х не могут быть равны или превышены меньшими номиналами.
- D, L и V могут появляться только один раз.
- Только М можно повторить 4 или более раз.
Дальнейшие заметки
Мы не будем использовать штриховую нотацию; скорее мы просто добавим больше M s, чтобы выразить любое число.
Это единственные правила, которым мы будем следовать для наших римских цифр. Это означает, что нечетные выражения, такие как
IVI
, также будут считаться действительными в нашей системе.Также помните, что мы не учитываем количество чисел, имеющих выражения длины n , поскольку некоторые числа имеют несколько выражений. Вместо этого мы рассчитываем только количество допустимых выражений.
Тестовые случаи
1
→ 7
2
→ 31
3
→ 105
Я проверил вышеупомянутое вручную, поэтому, пожалуйста, не забудьте перепроверить контрольные примеры и добавить больше, если можете!
Критерии победы
Это испытание для игры в гольф , так что веселитесь! Я принимаю только те решения, которые могут обрабатывать как минимум 1 - 9 входных данных. Больше бонусов!
редактировать
В соответствии с запросом комментаторов, найдите ниже, или по этой ссылке, 105 комбинаций, которые я посчитал для n = 3
III IVI IXI IXV IXX VII XII XIV XIX XVI XXI XXV XXX XLI XLV XLX XCI XCX XCL XCL XCC LII LIV LIX LIX LVI LXI LXV LXX CII CIV CIX CIX CVI CXI CXV CXX CXL CXC CLI CLV CDX CDI CDV CDX CCX CCX CCL CCL CCL CCL CMI CMV CMX CML CMC CMD CMM DII DIV DIX DVI DXI DXV DXX DXL DXC DLI DLV DLX DLX DCI DCV DCX DCL DCC MII MIV MIX MIX MXI MXI MXV MXX MXX MXL MXC MLI MLV MLX MCI MCV MCX MCL MCL MDL MDV MDI MDV MDC MDI MDC MDC MDC MDI MDC MDC MDC MDI MDI MDC MDI MDI MDC MDI MDI MDM MDM MDM MDM MDM MDM MDI MDX MMX MML MMC MMD MMM
Изменить 2:
Используйте следующий код , не относящийся к гольфу , любезно предоставленный Джонатаном Алланом, чтобы проверить ваши результаты.
Изменить 3:
Я прошу прощения за все ошибки в этом вызове. Я обязательно сделаю лучшую работу в следующий раз!