Tiềm năng theo cấp số nhân của tôi là gì?


14

Chúng tôi sẽ xác định tiềm năng N -exponential của số nguyên M dương là số lượng tiền tố của M NN -powers hoàn hảo .

Các tiền tố của một số nguyên là tất cả các dãy số tiếp theo của các chữ số bắt đầu bằng số đầu tiên, được hiểu là các số trong cơ sở 10. Ví dụ: các tiền tố của 27442 , 27 , 2742744 .

Một tiền tố P là một hoàn hảo N -power nếu có tồn tại một số nguyên KK N = P . Ví dụ, 814 công suất hoàn hảo vì 3 4 = 81 .


Cho hai số nguyên dương MN , tính toán tiềm năng N -exponential của M theo định nghĩa trên.

Chẳng hạn, tiềm năng 2 của 13313 21691 , 16169 đều là các ô vuông hoàn hảo.

Các trường hợp thử nghiệm

Đương nhiên, các đầu ra sẽ luôn luôn khá nhỏ vì các quyền hạn là ... à ... các hàm tăng theo cấp số nhân và có nhiều tiền tố công suất hoàn hảo là khá hiếm.

M, N     -> Output

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

xin chào, làm thế nào đầu ra của: (4, 10) là 2 chứ không phải 1? bởi vì 4 sức mạnh 10 là 1048576, 1 là một sức mạnh hoàn hảo nhưng không phải là 10
Ali ISSA

@AliISSA Hi, Các đầu ra cho 4, 102 , vì 1 là hoàn hảo 10-điện và 1048576 cũng là một hoàn hảo 10-điện (trong khi 10 , 104 , 1048 , 10.485104.857 là không). Do đó, có 2 tiền tố hợp lệ, do đó, đầu ra là 2.
Ông Xcoder

Câu trả lời:


10

Brachylog , 12 byte

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

Hãy thử trực tuyến!

Giải trình

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

Thạch , 10 byte

*DḌƤÆE%Ḅċ0

Hãy thử trực tuyến!

Làm thế nào nó hoạt động

*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

Hãy thử trực tuyến!

Trích xuất các tiền tố một cách hợp lý bằng cách lặp lại \x->div x 10. Tôi đã cố gắng diễn đạt dòng cuối cùng miễn phí nhưng không tìm thấy biểu thức ngắn hơn.






1

Perl 6 , 40 byte

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

Hãy thử trực tuyến!


Nếu bạn gán Callable cho một &foobiến, bạn có thể gọi nó như một chương trình con foo( 'bar' )hoặc foo 'bar'không cần đưa vào &. Ý tôi là bạn đã không viết nó dưới dạng &say(&f(|$_))( saykhông đặc biệt theo bất kỳ cách nào)
Brad Gilbert b2gills 20/03/18

@ BradGilbertb2gills Tôi chỉ sử dụng Perl 6 cho mã golf và vẫn còn nhiều thứ để học, vì vậy cảm ơn vì tiền boa.
nwellnhof

0

Thạch , 14 byte

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

Hãy thử trực tuyến! hoặc xem bộ kiểm tra

Làm thế nào nó hoạt động

*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()}")}

Hãy thử trực tuyến!

Trong các trường hợp thử nghiệm, được truyền vào n dưới dạng giá trị kép (2.0, 10.0, 9.0) để tôi không phải chuyển đổi thành gấp đôi khi gọi Math.pow ().



Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.