Каков мой экспоненциальный потенциал?


14

Мы определим N- экспоненциальный потенциал положительного целого числа M как количество префиксов M N, которые являются совершенными N -силами.

Префиксы целого числа - это все смежные подпоследовательности цифр, начинающиеся с первой, которые интерпретируются как числа в базе 10. Например, префиксы 2744 - это 2 , 27 , 274 и 2744 .

Префикс Р является идеальной Н -степенью , если существует целое число K таких , что K N = P . Например, 81 - идеальная 4- сила, потому что 3 4 = 81 .


Для двух строго положительных целых чисел M и N вычислим N- экспоненциальный потенциал M согласно приведенному выше определению.

Например, 2- экспоненциальный потенциал 13 равен 3, потому что 13 2 равен 169 , а 1 , 16 и 169 являются идеальными квадратами.

Контрольные примеры

Естественно, выходные данные почти всегда будут довольно малы, потому что мощности - это ... ну ... экспоненциально растущие функции и наличие нескольких префиксов совершенной мощности довольно редко.

M, N     -> Output

8499, 2  -> 1
4,    10 -> 2
5,    9  -> 2
6,    9  -> 2
13,   2  -> 3

привет, как вывод: (4, 10) равен 2, а не 1? потому что 4 степень 10 - это 1048576, 1 - совершенная сила, но не 10
Али ИССА

@AliISSA Привет, Выход для 4, 10равен 2 , потому что 1 - идеальное 10- сильное, а 1048576 - также идеальное 10- сильное (в то время как 10 , 104 , 1048 , 10485 и 104857 - нет). Таким образом, есть 2 действительных префикса, поэтому вывод равен 2.
Mr. Xcoder

Ответы:


10

Брахилог , 12 байт

{^a₀.&b~b^}ᶜ

Попробуйте онлайн!

объяснение

{^a₀.&b~b^}ᶜ
{         }ᶜ  Count the number of ways the following can succeed:
  a₀            A prefix of
 ^                the first {input} to the power of the second {input}
    .&          produces the same output with the same input as
       ~b         any number
         ^        to the power of
      b           all inputs but the first (i.e. the second input)

6

Желе , 10 байт

*DḌƤÆE%Ḅċ0

Попробуйте онлайн!

Как это устроено

*DḌƤÆE%Ḅċ0  Main link. Left argument: m. Right argument: n.

*           Compute m**n.
 D          Generate its decimal digits.
  ḌƤ        Convert prefixes back to integers.
    ÆE      Get the exponents of each prefix's prime factorization.
      %     Take all exponents modulo n.
            For a perfect n-th power, all moduli will be 0.
       Ḅ    Convert from binary to integer, mapping (only) arrays of 0's to 0.
        ċ0  Count the zeroes.

3

Haskell , 56 байт

0%n=0
x%n=sum[1|t<-[1..x],t^n==x]+div x 10%n
m#n=(m^n)%n

Попробуйте онлайн!

Извлекает префиксы арифметически повторяется \x->div x 10. Я попытался выразить последнюю строку без указания точки, но не нашел более короткого выражения.






1

Perl 6 , 40 байт

{1+(^$^m X**$^n).grep({$m**$n~~/^$^p/})}

Попробуйте онлайн!


Если вы присваиваете Callable &fooпеременной, вы можете вызывать ее так же, как подпрограмму foo( 'bar' )или foo 'bar'нет необходимости включать ее &. Я имею в виду, что вы не написали это как &say(&f(|$_))( sayне является особенным в любом случае)
Брэд Гилберт b2gills

@ BradGilbertb2gills Я использую Perl 6 только для гольф-кода, и мне еще многое предстоит узнать, так что спасибо за совет.
nwellnhof

0

Желе , 14 байт

*DḌƤ*İ}ær⁵%1¬S

Попробуйте онлайн! или посмотрите набор тестов

Как это устроено

*DḌƤ*İ}ær⁵%1¬S - Main link. Arguments: n, m (integers)  e.g. 13, 2
*              - Power. Raise x to the power y               169
 D             - Convert to a list of digits                 [1 6 9]
   Ƥ           - Convert each Ƥrefix
  Ḍ            - Back to an integer                          [1 16 169]
     İ         - Calculate the İnverse of
      }        - The right argument                          0.5
    *          - Raise each element to that power            [1 4 13]
       ær⁵     - Round each to 10 ** -10                     [1 4 13]
               - to remove precision errors
          %1   - Take the decimal part of each               [0 0 0]
            ¬  - Logical NOT each                            [1 1 1]
             S - Sum                                         3




0

Котлин , 89 байт

m,n->1+(1..m-1).count{"${Math.pow(m+0.0,n)}".startsWith("${Math.pow(it+0.0,n).toInt()}")}

Попробуйте онлайн!

В тестовых случаях передается в n как двойные значения (2.0, 10.0, 9.0), так что мне не нужно преобразовывать в double при вызове Math.pow ().



Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.