ศักยภาพเชิงเลขชี้กำลังของฉันคืออะไร?


14

เราจะกำหนดศักยภาพN-เอ็กซ์โพเนนเชียลของจำนวนเต็มบวกMเป็นจำนวนนำหน้าของM Nซึ่งเป็นN -power ที่สมบูรณ์แบบ

คำนำหน้าของจำนวนเต็มคือประกาศ subsequences ต่อเนื่องกันของตัวเลขที่ขึ้นต้นด้วยครั้งแรกหนึ่งตีความว่าเป็นตัวเลขในฐาน 10. ตัวอย่างเช่นคำนำหน้าของ2744มี2 , 27 , 274และ2744

คำนำหน้าPเป็นที่สมบูรณ์แบบN -Power ถ้ามีจำนวนเต็มKเช่นที่K N = P ยกตัวอย่างเช่น81เป็นที่สมบูรณ์แบบ4 -Power เพราะ3 4 = 81


กำหนดจำนวนเต็มบวกMและN สองตัวให้คำนวณหาศักยภาพN -exponential ของMตามคำจำกัดความข้างต้น

ยกตัวอย่างเช่น2ศักยภาพ -exponential ของ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
Ali ISSA

@AliISSA สวัสดีผลลัพธ์สำหรับ4, 10คือ2เพราะ1เป็น 10 กำลังที่สมบูรณ์แบบและ1048576นั้นก็เป็นพลังงานที่สมบูรณ์แบบด้วย 10 กำลัง (ในขณะที่10 , 104 , 1048 , 10485และ104857นั้นไม่ใช่) ดังนั้นจึงมี 2 คำนำหน้าที่ถูกต้องดังนั้นการส่งออกเป็น 2
นาย Xcoder

คำตอบ:


10

Brachylogขนาด 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

ลองออนไลน์!

สารสกัดจากคำนำหน้า arithmetically \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 สำหรับ code golf เท่านั้นและยังมีอีกหลายอย่างที่ต้องเรียนรู้ดังนั้นขอบคุณสำหรับเคล็ดลับ
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

Kotlin , 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 ()


0

Python 2 , 83 71 70 ไบต์

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

ลองออนไลน์!

ขอบคุณสำหรับ 1 จาก ovs


@ovs: d'oh! เมื่อเร็ว ๆ นี้การเข้ารหัสจาวาสคริปต์มากเกินไป ... กำลังคิดว่าฉันต้องการmath.round()lol
Chas Brown

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.