Який мій експоненційний потенціал?


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
Алі ISSA

@AliISSA Привіт, вихідний показник 4, 10становить 2 , тому що 1 - це ідеальна 10-силова потужність, а 1048576 - також ідеальна 10- сильна потужність (тоді як 10 , 104 , 1048 , 10485 і 104857 - ні). Таким чином, є 2 дійсних префікса, тож вихід 2.
Містер 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), так що мені не доведеться перетворювати в подвійне під час виклику Math.pow ().



Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.