Дж. Максфилд доказал следующую теорему (см. DOI: 10.2307 / 2688966 ):
Если является любым положительным целым числом, имеющим цифр, существует такое положительное целое число , что первые цифр представляют собой целое число .
Вызов
Вашему вызову дан некоторый найдите соответствующий .
Детали
- представляет факториал из .
- В нашем случае цифры понимаются как основание .
- Ваша заявка должна работать для произвольного учитывая достаточно времени и памяти. Простого использования, например, 32-битных типов для представления целых чисел недостаточно.
- Вам не обязательно нужно вывести наименьшее возможное .
Примеры
A N
1 1
2 2
3 9
4 8
5 7
6 3
7 6
9 96
12 5
16 89
17 69
18 76
19 63
24 4
72 6
841 12745
206591378 314
Наименьшее возможное для каждого можно найти по адресу https://oeis.org/A076219.
Ответы:
Python 2 , 50 байт
Попробуйте онлайн!
Это вариация 47-байтового решения, описанного ниже, с поправкой на возврат
1
для ввода'1'
. (А именно, мы добавляем1
к полному выражению, а не к рекурсивному вызову, и начинаем считать,n==2
чтобы удалить один слой глубины, балансируя результат для всех не'1'
входных данных.)Python 2 , 45 байт (карты 1 в
True
)Это еще один вариант, @Jo King и @xnor, который принимает входные данные как число и возвращает их
True
для ввода1
. Некоторые люди думают это честная игра, но я лично нахожу ее немного странной.Но для обтекания результата icky Boolean требуется всего 3 байта
+()
, что дает нам более короткое «хорошее» решение:Python 2 , 48 байт
источник
+1
любом случае реализация вашего подхода позволила мне сэкономить несколько байт .a
число.-a
в-p
``, это хитрый трюк :)Брахилог ,
35 байтПопробуйте онлайн!
Принимает ввод через свою выходную переменную и выводит через свою входную переменную. (С другой стороны, он просто находит произвольные префиксы факториала входных данных, что не так интересно.) Время ожидания второго контрольного примера на TIO, но хорошо на последнем . На момент написания этой статьи я запускал его на 841 на своем ноутбуке в течение нескольких минут, и он пока не выдал ответ, но я в это верю.
Поскольку единственный вход
ḟa₀
не работает для 1, а 1 является положительным префиксом 1! = 1,1|ḟa₀
работает так же хорошо.Кроме того, на момент этого редактирования 841 работал почти три часа и до сих пор не дал результатов. Я предполагаю, что вычисление факториала каждого целого числа от 1 до 12745 не совсем быстрое.
источник
C ++ (gcc) ,
10795 байт, используя-lgmp
и-lgmpxx
Спасибо людям в комментариях за указание на некоторые глупые ошибки.
Попробуйте онлайн!
Вычисляетn! умножением (n−1)! по n , затем многократно делит его на 10 пока оно не станет больше, чем переданное целое число. В этот момент цикл завершается, если факториал равен переданному целому числу или переходит к следующему n противном случае.
источник
107
байты.return
?Желе , 8 байт
Попробуйте онлайн!
Принимает целое число и возвращает синглтон.
источник
05AB1E , 7 байтов
Попробуйте онлайн или проверьте почти все тестовые случаи (
841
время ожидания исключено).Объяснение:
источник
Pyth - 8 байт
Попробуйте онлайн .
источник
JavaScript,
4743 байтаВывод как BigInt.
Попробуйте онлайн!
Сохраните несколько байтов, приняв подход Линн «строить» факториал, а не вычислять его на каждой итерации, поэтому, пожалуйста, также проголосуйте за ее решение, если вы голосуете против этого.
источник
_Ês bU}f1
в Japt не работаетs
.1
if0
дляn=1
.x=i=1n;f=n=>`${x*=++i}`.search(n)?f(n):i
C # (.NET Core) , 69 + 22 = 91 байт
Попробуйте онлайн!
Использует
System.Numerics.BigInteger
который требуетusing
утверждения.-1 байт благодаря @ExpiredData!
источник
Желе , 16 байт
Попробуйте онлайн!
объяснение
источник
Perl 6 , 23 байта
Попробуйте онлайн!
объяснение
источник
Древесный уголь , 16 байт
Попробуйте онлайн! Ссылка на подробную версию кода. Объяснение:
Нажмите
1
на пустой список, чтобы он начинался с определенного продукта.Повторите, пока вход не может быть найден в начале произведения списка ...
... подтолкнуть длину списка к себе.
Выведите последнее значение, помещенное в список.
источник
Perl 5
-Mbigint -p
, 25 байтПопробуйте онлайн!
источник
J ,
2822 байта-6 байт благодаря FrownyFrog
Попробуйте онлайн!
оригинальный ответ J , 28 байт
Попробуйте онлайн!
>:@] ... x:@1
начиная с повышенной точности1
, продолжайте увеличивать его, пока ...-.@
дело не в том, что ...{.@
первый вяз - стартовый матч ...E.&":
все подстроки совпадают (после строкового определения обоих аргументов&":
) поиска исходного ввода в ...!
факториал числа, которое мы увеличиваемисточник
(]+1-0{(E.&":!))^:_&1x
C (gcc) -lgmp, 161 байт
Попробуйте онлайн!
источник
strstr(b=mpz_get_str(0,10,_),a)-b;mpz_mul(_,_,n))mpz_add_ui(n,n,1)
вместоb=mpz_get_str(0,10,_),strstr(b,a)-b;mpz_add_ui(n,n,1),mpz_mul(_,_,n))
Python 3 , 63 байта
Попробуйте онлайн!
-24 байта благодаря Джо Кингу
-3 байта благодаря Часу Брауну
источник
f=
что то, что у вас есть в заголовке, должно засчитываться в счет ваших битов.Желе , 11 байт
Попробуйте онлайн!
источник
Чисто , 88 байт
Попробуйте онлайн!
Определяет
$ :: Integer -> Integer
.Использует
Data.Integer
произвольные целые числа размера для ввода-вывода.источник
Wolfram Language (Mathematica) , 62 байта
Попробуйте онлайн!
источник
Рубин , 40 байт
Попробуйте онлайн!
источник
Icon ,
6563 байтаПопробуйте онлайн!
источник
Haskell, 89 байт
Если кто-нибудь знает, как обойти требуемый импорт, дайте мне знать.
источник