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 (আবার)

ইনপুট: r≤100

আউটপুট: 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.