আমার ক্ষতিকারক সম্ভাবনা কি?


14

আমরা ধনাত্মক পূর্ণসংখ্যার এম এর এন- প্রফেনশিয়াল সম্ভাবনাটিকে এম এন এর উপসর্গগুলির গণনা হিসাবে সংজ্ঞায়িত করব যা নিখুঁত এন- পাওয়ার রয়েছে।

একটি পূর্ণসংখ্যার উপসর্গগুলি হ'ল অঙ্কের সমস্ত সংক্ষিপ্ত উপসর্গ যা প্রথমটি দিয়ে শুরু হয়, বেস 10 তে সংখ্যা হিসাবে ব্যাখ্যা করা হয় example উদাহরণস্বরূপ, 2744 এর উপসর্গগুলি 2 , 27 , 274 এবং 2744

একটি উপসর্গ পি একটি নিখুঁত এন-পাওয়ার হয় যদি কে- এন = পি এর মতো পূর্ণসংখ্যার কে থাকে । উদাহরণস্বরূপ, 81 হ'ল একটি নিখুঁত 4-শক্তি কারণ 3 4 = 81


দুটি কঠোর ইতিবাচক পূর্ণসংখ্যার এম এবং এন দেওয়া হয়েছে , উপরের সংজ্ঞা অনুযায়ী এম এর এন -সম্ভাব্য সম্ভাবনা গণনা করুন ।

উদাহরণস্বরূপ, 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 নয়
আলী আইএসএসএ

@AliISSA হাই, জন্য আউটপুট 4, 10হয় 2 কারণ, 1 একটি নিখুঁত 10 শক্তি এবং 1048576 একটি নিখুঁত 10 শক্তি (যখন 10 , 104 , 1048 , 10485 এবং 104857 নয়)। সুতরাং, এখানে 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
কোনওভাবেই

@ ব্র্যাডগিলবার্টবিগিলস আমি কেবল কোড গল্ফের জন্য পার্ল 6 ব্যবহার করি এবং এখনও আরও অনেক কিছু শিখতে হবে, তাই টিপটির জন্য ধন্যবাদ।
নয়েলহোহফ

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

এটি অনলাইন চেষ্টা করুন!

পরীক্ষার ক্ষেত্রে এনগুলিতে ডাবল ভ্যালু (2.0, 10.0, 9.0) হিসাবে পাস হয়েছে যাতে ম্যাথ.পো () কল করার সময় আমাকে দ্বিগুণ রূপান্তর করতে হবে না।


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 এর জন্য থেক্স।


@ ওভস: ডিওহ! ইদানীং খুব বেশি জাভাস্ক্রিপ্ট কোড করা হচ্ছে ... ভাবছিলাম আমার math.round()লোল দরকার হবে
চ্যাস ব্রাউন

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.