এই নম্বরটি কেমন?


13

ফারম্যাট সংখ্যা হ'ল ধনাত্মক পূর্ণসংখ্যা যা 2 2 x +1 হিসাবে পূর্ণসংখ্যার এক্স দিয়ে প্রকাশ করা যায় ।

আসুন এখন "ফার্ম্যাট-নেস" নামক একটি সংখ্যার একটি বৈশিষ্ট্যটি সংজ্ঞায়িত করি:

  • সংখ্যার ফারম্যাট-নেস দুটি থেকে শুরু করে দুটি শক্তি শৃঙ্খলার দৈর্ঘ্যের চেয়ে কম, দু'টির শক্তি প্রসারিত হয় যাতে ফেরমেট-নেসকে সর্বাধিকতর করা যায়।
  • এমন একটি সংখ্যায় যা ফেরমেট সংখ্যা নয় শূন্যের ফেরমেট-নেস রয়েছে।

সুতরাং, 17 (= 2 2 2 2 0 +1) এর তিনটি ফেরমাট-নেস রয়েছে।

চ্যালেঞ্জ

ইনপুট হিসাবে ধনাত্মক ননজারো পূর্ণসংখ্যা দেওয়া হয়েছে, সংখ্যার ফার্ম্যাট-নেস আউটপুট দেয়।

বিধি

  • আপনি বাইনারি, দশমিক, হেক্সাডেসিমাল ইনপুট নিতে পারেন একটি বিনম হিসাবে, বা যে কোনও ফর্ম্যাট আপনাকে সেরা গল্ফ দেয়
  • আপনার সমাধানটি আপনি যে কোনও উপস্থাপনা ব্যবহার করেন 64৪ এর বেশি বিট-দৈর্ঘ্য সহ সংখ্যাগুলি প্রসেস করতে সক্ষম হবেন।
  • কেবলমাত্র অবৈধ পূর্ণসংখ্যার শক্তি।
  • স্ট্যান্ডার্ড লুফোলগুলি অবশ্যই নিষিদ্ধ।
  • এটি , তাই সংক্ষিপ্ত উত্তর জেতে।

পরীক্ষার মামলা

এগুলি বিন্যাসে রয়েছে input->output। স্থান বাঁচাতে ইনপুটটি হেক্সাডেসিমালে রয়েছে।

10000000000000000000000000000000000000000000000000000000000000001 -> 2
1000000000000BC00000000000000000000000000000000001000000000000001 ->0
1234567890ABCDEF -> 0
100000000000000000000000000000001 -> 1
5 -> 2
11 -> 3
10001 -> 4
101 -> 1

দশমিক একই:

115792089237316195423570985008687907853269984665640564039457584007913129639937 -> 2
115792089237316497527923305698859709742143344804209838213621568094470773145601 -> 0
1311768467294899695 -> 0
340282366920938463463374607431768211457 -> 1
5 ->2
17 -> 3
65537 -> 4
257 -> 1

স্যান্ডবক্সে অমূল্য ইনপুট দেওয়ার জন্য জিওকাভেলকে ধন্যবাদ ।


1
যদি আমি 1111 ইনপুট করি, আপনি কীভাবে জানবেন যে এটি বাইনারি, দশমিক বা হেক্সাডেসিমালে রয়েছে ???
J42161217

1
@ জেনি_ম্যাথী আমি উত্তরদাতাকে বোঝাতে চাইছিলাম যে তারা ইনপুটটির কোন বিন্যাস চান তা স্থির করে।
HAEM

@ মিঃ এক্সকোডার এটি স্যান্ডবক্সে উঠে এসেছে যে 64৪ বিট বা তারও কম সংখ্যক ফর্ম্যাট সংখ্যা নেই। আমি দাবি করছি যে প্রশ্নটি অন্তর্নিহিত বিন্দমগুলি সম্পর্কে যাতে আমি বিগনাম প্রসেসিংয়ের দাবি করতে পারি।
HAEM

2
@ হাইক্কিমেনপää মনে রাখবেন, অন্যেরা যা কিছু সুপারিশ করতে পারে তা নয়, চ্যালেঞ্জটি আপনার, এবং আপনি যা চান তা তৈরি করতে পারেন।
isaacg

3
আমি মনে করি এটি খুব তাড়াতাড়ি গ্রহণ করুন। সাধারণত 1 বা 2 সপ্তাহ অপেক্ষা করুন। কেউ কেউ কখনও মেনে নিতে বলেন!
জিওকাভেল

উত্তর:



1

পাইথন 2 , 103 81 বাইট

n=input()-1
i=l=0
while 2**2**i<=n:
 if n==2**2**i:n=2**i;i=-1;l+=1
 i+=1
print l

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

আমি বুঝতে পেরেছিলাম যে বোকা না হওয়া আমার বাইট গণনা হ্রাস করতে সহায়তা করবে, তাই আমি এটি করেছি। লগারিদমের বিপরীতে ক্ষয়ক্ষতিও।


0

RProgN 2 , 75 বাইট

«\`n=1\]{1-\n*\]}:[»`^=«1-`n=001{]2\^2\^ne{2\^`n=1+0}{1+}?]2\^2\^n>¬}:[»`¤=

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

এটি কেবলমাত্র 70 বাইট হয় যদি আপনি চরিত্রটির «»'¤=সাথে Fermatness গণনা বরাদ্দ করে না ¤। যদি আপনি এটি করেন তবে আপনার এখন নম্বরটি পাদলেখের পরিবর্তে টিআইওর শিরোনাম বিভাগে রেখে দেওয়া দরকার।

এটি কার্যকরভাবে আমার পাইথন উত্তরের মতো একই যুক্তি ব্যবহার করে, সুতরাং আরপিগ্রোএন 2 কীভাবে কাজ করে সে সম্পর্কে আপনি যদি চিন্তা না করেন তবে কী চলছে তা ব্যাখ্যা করার জন্য কেবল সেটিকে দেখুন। অন্যভাবে

কোড ভাঙ্গন:

«\`n=1\]{1-\n*\]}:[»`^=
«                  »`^=`                            # Create a local function and assign it to the ^ character (x y ^ is x to the power of y)
 \`n=                                               # Swap the top two values of the stack and assign the new top to the variable n
     1\]                                            # Push a 1 (our starting point for x to the y), swap with the y value, then duplicate y
        {       }:                                  # Start a while loop that pops the top stack value and loops if it is truthy
         1-                                         # Subtract 1 from y to keep a tally of how many multiplications we've done
           \n*                                      # Swap the counter with our current value and multiply it by n
              \]                                    # Swap this new value with the current value of y, and duplicate it to be used as the truthy value for the loop

«1-`n=001{]2\^2\^ne{2\^`n=1+0}{1+}?]2\^2\^n>¬}:[»`¤=# The main Fermatness function (x ¤ to get the Fermatness of x)
«                                               »`¤=# Create another local function for this calculation
 1-`n=                                              # Decrement the input by 1 and assign it to n
      001                                           # Push a counter for Fermatness, a counter for calculating 2^2^i, and an initial truthy value
         {                                   }:     # Start a while loop for calculating the Fermatness
          ]2\^2\^ne                                 # Duplicate i, calculate 2^2^i, and compare it to n
                   {         }{  }?                 # Start an if statement based on the equality of 2^2^i and n
                    2\^`n=                          # n==2^2^i, so set n to 2^i (same as saying n=log_2(n))
                          1+0                       # Increment the Fermatness counter and reset i
                               1+                   # n!=2^2^i, so just increment i
                                   ]2\^2\^n>¬       # Duplicate the counter and check if 2^2^i<=n, if true the loop continues, else it exits
                                               [    # Pop i from the stack, leaving us with just the Fermatness counter

দুর্ভাগ্যক্রমে লগ ফাংশন Šএবং সাধারণ ক্ষতিকারক ক্রিয়াকলাপটি ^এই স্থানীয়ভাবে করার জন্য যথার্থতার ঘাটতি থাকে না, সুতরাং আমি গুণিতকরণটি যেহেতু গুনের ফলে আরও স্পষ্টতা বহন করে তা কীভাবে কাজ করেছিল তা পুনরায় সংজ্ঞায়িত করতে হয়েছিল। সেই পুনঃনির্ধারণ ছাড়া, এই উত্তরটি 23 বাইট কম হবে।


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