Apa potensi eksponensial saya?


14

Kami akan menentukan N potensi -exponential dari bilangan bulat positif M sebagai hitungan prefiks dari M N yang sempurna N -powers.

Awalan bilangan bulat adalah semua angka berikutnya yang bersebelahan yang dimulai dengan angka pertama, diartikan sebagai angka pada basis 10. Sebagai contoh, awalan 2744 adalah 2 , 27 , 274 dan 2744 .

Sebuah awalan P adalah sempurna N -power jika ada integer K sehingga K N = P . Misalnya, 81 adalah kekuatan 4 sempurna karena 3 4 = 81 .


Diberikan dua bilangan bulat positif M dan N , hitung potensial N -eksponensial M sesuai dengan definisi di atas.

Misalnya, 2- potensi potensial dari 13 adalah 3 karena 13 2 adalah 169 , dan 1 , 16 dan 169 semuanya kotak sempurna.

Uji kasus

Tentu saja, output akan hampir selalu sangat kecil karena kekuatan adalah ... yah ... fungsi yang tumbuh secara eksponensial dan memiliki beberapa awalan kekuatan sempurna agak jarang.

M, N     -> Output

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

halo, bagaimana output dari: (4, 10) adalah 2 dan bukan 1? karena 4 kekuatan 10 adalah 1048576, 1 adalah kekuatan sempurna tetapi bukan 10
Ali ISSA

@AliISSA Hi, Output untuk 4, 10ini 2 , karena 1 adalah sempurna 10-daya dan 1.048.576 juga sempurna 10-daya (sementara 10 , 104 , 1048 , 10485 dan 104.857 tidak). Jadi, ada 2 awalan yang valid, jadi outputnya adalah 2.
Tn. Xcoder

Jawaban:


10

Brachylog , 12 byte

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

Cobalah online!

Penjelasan

{^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

Jelly , 10 byte

*DḌƤÆE%Ḅċ0

Cobalah online!

Bagaimana itu bekerja

*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 byte

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

Cobalah online!

Ekstrak awalan secara hitung secara berulang \x->div x 10. Saya mencoba mengekspresikan baris terakhir yang bebas titik tetapi tidak menemukan ekspresi yang lebih pendek.






1

Perl 6 , 40 byte

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

Cobalah online!


Jika Anda menetapkan Callable ke &foovariabel, Anda dapat memanggilnya seperti yang Anda lakukan subrutin foo( 'bar' )atau foo 'bar'tidak perlu menyertakan &. Maksud saya Anda tidak menuliskannya &say(&f(|$_))( saytidak khusus dalam hal apa pun)
Brad Gilbert b2gills

@ BradGilbertb2gills Saya hanya menggunakan Perl 6 untuk kode golf dan masih harus banyak belajar, jadi terima kasih atas tipnya.
nwellnhof

0

Jelly , 14 byte

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

Cobalah online! atau lihat test suite

Bagaimana itu bekerja

*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

Kotlin , 89 byte

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

Cobalah online!

Dalam kasus uji, diteruskan dalam n sebagai nilai ganda (2.0, 10.0, 9.0) sehingga saya tidak perlu mengonversi menjadi ganda saat memanggil Math.pow ().


0

Python 2 , 83 71 70 byte

n,m=input();s=n**m;k=0
while s:k+=round(s**(1./m))**m==s;s/=10
print k

Cobalah online!

Terima kasih untuk 1 dari ovs.


@ovs: d'oh! telah terlalu banyak mengkode javascript akhir-akhir ini ... berpikir aku perlu math.round()lol
Chas Brown

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.