मेरी घातीय क्षमता क्या है?


14

हम एक सकारात्मक पूर्णांक M के N -exponential क्षमता को परिभाषित करेंगे जो M N के उपसर्गों की गिनती के रूप में है जो कि परिपूर्ण N -powers हैं।

एक पूर्णांक के उपसर्गों को अंकों में है कि पहले एक, आधार से 10 उदाहरण के लिए में संख्या के रूप में व्याख्या के साथ शुरू से सटे subsequences कर रहे हैं, के उपसर्ग 2744 कर रहे हैं 2 , 27 , 274 और 2744

एक उपसर्ग पी एक आदर्श है एन -बिजली की अगर वहाँ एक पूर्णांक मौजूद कश्मीर ऐसी है कि कश्मीर एन = पी । उदाहरण के लिए, 81 एक पूर्ण 4- शक्ति है क्योंकि 3 4 = 81


दो सख्ती से सकारात्मक पूर्णांक M और N को देखते हुए , उपरोक्त परिभाषा के अनुसार M की N -exponential क्षमता की गणना करें ।

उदाहरण के लिए, 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 नहीं
अली ISSA

@AliISSA हाय, के लिए उत्पादन 4, 10है 2 क्योंकि, 1 एक आदर्श 10-शक्ति है और 1048576 भी एक आदर्श 10-शक्ति है (जबकि 10 , 104 , 1048 , 10,485 और 104,857 नहीं हैं)। इस प्रकार, 2 मान्य उपसर्ग हैं, इसलिए आउटपुट 2 है
श्री एक्सकोडर

जवाबों:



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

हास्केल , 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

जावा (ओपनजेडके 9) , 105 बाइट्स

m->n->{int c=1,k=m;for(;--k>0;)if((""+(int)Math.pow(m,n)).matches((int)Math.pow(k,n)+".*"))c++;return c;}

इसे ऑनलाइन आज़माएं!

क्रेडिट


1
.startsWith(""+(int)Math.pow(k,n)).matches((int)Math.pow(k,n)+".*")-1 बाइट के लिए हो सकता है ।
केविन क्रूज़सेन

1

पर्ल 6 , 40 बाइट्स

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

इसे ऑनलाइन आज़माएं!


यदि आप एक &fooचर के लिए एक कॉल करने योग्य असाइन करते हैं, तो आप इसे एक सबरूटीन कह सकते हैं foo( 'bar' )या foo 'bar'इसमें शामिल होने की कोई आवश्यकता नहीं है &। मेरा मतलब है कि आपने इसे नहीं लिखा है &say(&f(|$_))( sayकिसी भी तरह से विशेष नहीं है)
ब्रैड गिल्बर्ट b2gills

@ ब्रैडगिल्बर्ब 2 जील्स मैं केवल कोड गोल्फ के लिए पर्ल 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 () कॉल करते समय डबल में कनवर्ट न करना पड़े।


0

पायथन 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

इसे ऑनलाइन आज़माएं!

Ovs से 1 के लिए Thx।


@ नोव्स: डीह! बहुत ज्यादा जावास्क्रिप्ट हाल ही में कोडिंग किया गया ... सोच रहा था मैं आवश्यकता होगी math.round()lol
चास ब्राउन

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.