2 পাওয়ারের শেষ কে অঙ্কগুলি


16

যে কোনও পূর্ণসংখ্যার r জন্য 2 টির শক্তি রয়েছে যার শেষ r অঙ্ক 1 বা 2 হয়।

প্রদত্ত r , ক্ষুদ্রতম খুঁজে x যেমন যে 2xmod10r মাত্র 1 বা 2 নিয়ে গঠিত।

জন্য r=2 , x=9 , যেহেতু 29=512
জন্য r=3 , x=89 , যেহেতু 289=618970019642690137449562112
নোট: জন্য r=4 , x হয় =89 (আবার)

ইনপুট: r100

আউটপুট: x

যেমন।

ইনপুট: 2
ওউপুট: 9

ইনপুট: 3
আউপুট: 89

প্রোগ্রামটি একটি যুক্তিসঙ্গত সময়ে চলতে হবে।

সম্পাদনা: এই চ্যালেঞ্জের ওয়েস ক্রমটি A147884


2
এই কাজের জন্য OEIS হয় A147884
ভাববিলাসী

@ দেবানজান, হ্যাঁ সত্য। @ এসমার্ক, ২ এর শক্তি নয়, ৩.
st0le

আমার একটি কাগজ রয়েছে, যা একটি দক্ষ অ্যালগরিদম বর্ণনা করে। কেউ যদি এটির সাথে এগিয়ে যেতে না পারে তবে আমি এটি পোস্ট করব।
st0le

আহ, ঠিক আছে, ধন্যবাদ!
আপনি

@ st0le: জটিলতা?
whacko__ ক্র্যাকো

উত্তর:


4

পাইথন, ১66 টি চর

k,f,g=1,4,16
i=j=2
n=input()
m=10**n
a=lambda c:c('')-1-i or c('1')+c('2')-c('')+1
while i<=n:
 while a(str(j)[-i:].count):j,k=j*g%m,k+f
 i,g,f=i+1,g**5%m,f*5
print k

দুর্দান্ত কাজ, মার্ক :) আমি অনুমান করি আপনি এটি পেয়েছেন :)
st0le

আপনি সেমিকোলন ব্যবহার করে কয়েকটি বাইট সংরক্ষণ করতে পারেন: 161 বাইট
মুভ্যাটিকা

2

ওল্ফ্রাম ভাষা (গণিত) , 78 76 57 55 বাইট

(x=0;While[Max@Abs[2IntegerDigits[2^++x,10,#]-3]>1];x)&

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

IntegerDigits[a,10,r]এর rদশমিক দশমিকের একটি তালিকা তৈরি করে a। 3/2 বিয়োগ করুন এবং দেখুন যে তারা সবাই -1/2 বা +1/2 হয়।

সময় চেক: TIO এ 20 সেকেন্ড r = 1 .. 10

ওল্ফ্রাম ভাষা (গণিত) , 102 95 91 89 বাইট

k/.FindInstance[Mod[n=0;Nest[#+10^n(2-Mod[#/2^n++,2])&,0,#]-2^k,5^#]==0,k,Integers][[1]]&

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

এই সমাধানটি অনেক দীর্ঘ তবে অনেক দ্রুত। পাথ প্রস্তাব গ্রহণ করে OEIS A147884 মাধ্যমে যেতে OEIS A053312 , সেইসাথে ব্যবহার FindInstanceজাদু Tio গনা পরিচালনা করে r = 1 .. 12এক মিনিটেরও কম হবে।


1

রুবি - 118 অক্ষর

k,f,g,m=1,4,16
i=j=2
m=10**(n=gets.to_i)
((k+=f;j=j*g%m)until j.to_s=~%r{[12]{#{i}}$};i+=1;f*=5;g=g**5%m)until n<i
p k

1

হাস্কেল, ১১ 115 টি অক্ষর

import List
main=readLn>>=print. \r->head$findIndices(all(`elem`"12").take r.(++cycle"0").reverse.show)$iterate(*2)1


1

05 এ বি 1 ই , 18 15 বাইট

∞.Δo©‹®I.£2X:`P

এটি অনলাইনে চেষ্টা করুন বা প্রথম 8 টি পরীক্ষার কেস যাচাই করুন (আরও কোনও বার আউট)।

ব্যাখ্যা:

সত্য যে ব্যবহার করে 2এক্স>R সমস্ত সম্ভাব্য ফলাফলের জন্য, আমাদের কাছে শেষ পেতে পর্যাপ্ত সংখ্যা রয়েছে তা নিশ্চিত করতে R এর সংখ্যা 2এক্স

∞.Δ            # Find the first positive integer x which is truthy (==1) for:
   o           #  Take 2 to the power the integer: 2^x
    ©          #  Store it in variable `®` (without popping)
              #  Check that it's larger than the (implicit) input: r < 2^x
               #  (1 if truhy; 0 if falsey)
    ®          #  Push variable `®` again: 2^x
     I       #  Only leave the last input amount of digits
        2X:    #  Replace all 2s with 1s
           `   #  Push all digits separated to the stack
    P          #  Take the product of all digits on the stack (including the earlier check)
               #  (NOTE: Only 1 is truthy in 05AB1E)

0

সিএসআরপ - 111 টি অক্ষর

int a(int r){int x=1;a:x++;foreach(var c in Math.Pow(2,x)%Math.Pow(10,r)+"")if(c!='1'&&c!='2')goto a;return x;}


0

জুলিয়া 133 122 (51) বাইট

আপনার উত্তরে অনুপ্রাণিত:

n->(k=1;f=4;g=big(16);i=j=2;m=10^n;while i<=n;while digits!(fill(0,i),j)⊈1:2;j,k=j*g%m,k+f;end;i,g,f=i+1,g^5%m,f*5end;k)

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

নিম্নলিখিতটি আরও সংক্ষিপ্ত, তবে এটি অন্যান্য উত্তরগুলির মতো r> 8 এর জন্য ক্র্যাশ হয়েছে:

f(r,x=big(1))=digits!(fill(0,r),x)⊈1:2&&f(r,2x)+1

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

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