3 এর 10-অ্যাডিক কিউবটি অনুসন্ধান করুন


24

আমি একটি 10-অ্যাডিক নম্বরটি এমন একটি সংখ্যা হিসাবে ভাবতে চাই যা অসীমভাবে বাম দিকে চলে যায়, বা একটি পূর্ণসংখ্যা মডুলোর 10 খুব খুব বড় শক্তি power

জিনিসগুলি বাম দিকে অসীমভাবে বহন করে এবং বিলুপ্ত হয়। আমার অর্থ কী তা দেখার জন্য, দ্রষ্টব্য যে ...6667 * 3 = 110-অ্যাডিক জমিতে, যেহেতু "2" বাম দিকে বহন করে তা অনন্ত হয়ে যায়।

যোগ / গুণাবলীর শেষ nসংখ্যাগুলি যোগফল n/ গুণক এর শেষ সংখ্যাগুলির উপর নির্ভর করে যেহেতু যোগ-গুণ 10-অ্যাডিক সংখ্যার জন্য অর্থবোধ করে।


প্রদত্ত n, আপনাকে n3 এর 10-অ্যাডিক কিউব মূলের শেষ সংখ্যাগুলি মুদ্রণ করতে হবে , যেমন xসন্তুষ্ট করা x*x*x = 3

এটা শেষ:

...878683312291648481630318492665160423850087895134587

আপনার কোড n=1000জমা দেওয়ার আগে অবশ্যই শেষ করতে হবে ।

আসুন আমরা বলি যে আপনার মুদ্রণের জন্য যে নম্বরটি শিরোনাম দিয়ে শুরু হচ্ছে, তারপরে আপনাকে শীর্ষস্থানীয় শূন্যগুলি প্রিন্ট করার দরকার নেই, কারণ এটি অতিরিক্ত শূন্যগুলি প্রিন্ট করার মূল বিষয় নয়।


এটি । বাইট জিতে সংক্ষিপ্ত উত্তর।



1
আমাদের কি শীর্ষস্থানীয় শূন্যগুলি প্রিন্ট করা দরকার? বেশিরভাগ উত্তর (আমার জাভা উত্তর সহ) বর্তমানে সেগুলির জন্য ব্যর্থ হচ্ছে। এর পরিবর্তে n=12আউটপুটিং । ব্যক্তিগতভাবে আমি এটি 87895134587087895134587
optionচ্ছিক করব

@ কেভিন ক্রুজসেন সম্পন্ন করেছেন
লিকি নুন

উত্তর:


26

পাইথন 2 , 33 বাইট

lambda k:pow(3,10**k*2/3+1,10**k)

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

powফাংশন দক্ষতার মডুলার এক্সপোনেন্ট নির্ণয় 3**(10**k*2/3+1)%10**k

আমাদের এর সমাধান খুঁজতে বলা হয়েছে r**3 = 3 (mod 10**k)। আমরা একটি এক্সপোনেন্ট খুঁজতে চান e, যার জন্য মানচিত্র x -> x**eহয় cubing করার বিপরীত x -> x**3কাজ গেলিক ভাষার 10**kঠিক যেমন আরএসএ মধ্যে ডিক্রিপশন এবং এনক্রিপশন বহিঃপ্রকাশ মূল মান উত্পাদন করতে বাতিল। এর অর্থ (x**3)**e = x (mod 10**k)সবার জন্য x। (আমরা এটি জুড়ে ধরেই নেব gcd(x,10) = 1Then) তারপরে, আমরা rকিউবিংটি পাওয়ার জন্য উল্টিয়ে পুনরুদ্ধার করতে পারি r = 3**e (mod 10**k)

প্রসারিত (r**3)**e = r (mod 10**k), আমরা পেতে

r**(3*e-1) = 1 (mod 10**k)

আমরা এমন এক অনাবৃতের সন্ধান করছি 3*e-1যা গ্যারান্টি দেয় যে বহু কপি আমাদের দেয় 1

গুণক মডুলো 10**kইনভারটিবেবল সংখ্যার জন্য একটি গ্রুপ গঠন করে, এটির সাথে gcd(x,10) = 1। লেগ্রঞ্জের উপপাদ্য অনুসারে, গ্রুপের উপাদানগুলির সংখ্যা x**c = 1কোথায় c। গ্রুপ মডিউল জন্য N, যে গণনা ইউলার totient মান φ(N)থেকে মান রয়েছে তা গণনা 1করার Nযে অপেক্ষাকৃত প্রধানমন্ত্রীর হয় N। সুতরাং, আমরা আছে r**φ(10**k) = 1 (mod 10**k)। অতএব, এর 3*e-1একাধিক হিসাবে যথেষ্ট হয় φ(10**k)

আমরা গণনা করি

φ(10**k) = φ(5**k) φ(2**k)= 4 * 5**(k-1) * 2**(k-1) = 4 * 10**(k-1)`

সুতরাং, আমরা 3*e-1একাধিক হতে চাই4 * 10**(k-1)

3*e - 1 = r * 4 * 10**(k-1)
e = (4r * 10**(k-1) + 1)/3

অনেক পছন্দ এর পক্ষে সম্ভব r, তবে r=5সংক্ষিপ্ত প্রকাশ দেয়

e = (2 * 10**k + 1)/3

eপুরো সংখ্যা সহ মেঝে-বিভাগ ব্যবহার করে কিছুটা গল্ফিং সংক্ষিপ্ত eহয়ে যায় 10**k*2/3+1এবং প্রকাশ করা r = 3**e (mod 10**k)পছন্দসই ফলাফল দেয় r


1
আমি কীভাবে এটি কাজ করে তার আরও বিস্তারিত ব্যাখ্যা দেখতে চাই, খুব সুন্দর উত্তর!
ক্রিটসি লিথোস

হওয়া (r**3)**e = x (mod 10**k)উচিত (r**3)**e = r (mod 10**k)? এছাড়াও এটি কি কেবল কাকতালীয় ঘটনা (2 * 10**k + 1)/3 = 1/3 (mod 10**k)?
এইচ.পি.উইজ

@ এইচ.পি.উইজ হ্যাঁ, ধন্যবাদ, আমি এটি ঠিক করেছি। আমি নিশ্চিত নই যে এটি 3 এর জন্য একটি বিপরীত হওয়া একটি কাকতালীয় ঘটনা। এটি অবশ্যই যথেষ্ট নয়, যেহেতু 2 এর পরিবর্তে অন্যান্য মানগুলি কার্যকর হয় না।
xnor

@ এক্সনর আমি মনে করি এটি যথেষ্ট। আপনার যে 2কোনও সংখ্যার সাথে প্রতিস্থাপন করতে সক্ষম হতে হবেx = 2 (mod 3)
এইচপিউইজ

যথারীতি গণিতের জয়!
অলিভিয়ার গ্রাগোয়ার

18

পাইথন 2 (পাইপাই) , 55 50 বাইট

@ 5 এইচপি উইজে ধন্যবাদ বাইটস !

n=p=1;exec"p*=10;n+=3*(3-n**3)%p;"*input();print n

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

অঙ্ক অনুসারে (অ-ব্রুটফোর্ডিং) অঙ্ক গণনা করে, তাই এটি নিষ্ঠুর বলের চেয়ে দ্রুত।

এক্সিকিউট ছাড়া সংস্করণ

ব্যাখ্যা

(এটি জানার জন্য ধন্যবাদ @ লিকি নুন এবং @ ইউজার ২২২২২৯ )

প্রথমে পর্যবেক্ষণ করুন এটি n**3একটি ইনভলিউশন মডুলো 10 (অর্থাৎ যদি ফাংশনটি বলা হয় fতবে f(f(n)) == n)। এটি একটি বিস্তৃত অনুসন্ধান ব্যবহার করে নিশ্চিত হওয়া যায়।

আমরা পরবর্তী অঙ্কটি খুঁজে পেতে গাণিতিক আনয়ন ব্যবহার করতে পারি।
দিন হতে সংখ্যা তম অঙ্ক (ডান থেকে)।dnn

d 1 3 ≡ 3 (10 মড)
 d 1 ≡ 3 3 (Mod 10)
    ≡ 27 (10 মড)
    ≡ 7 (10 মড)

এখন ধরে নেওয়া যাক, আমরা সংখ্যাটি kতম সংখ্যা পর্যন্ত জানি ,x

              এক্স 3 ≡ 3 (গেলিক ভাষার 10  )
  (ডি কে + 1 · 10 কে + এক্স) 3 ≡ 3 (মোড 10 কে + 1 )
3 · ডি কে + 1 এক্স 2 · 10 কে + এক্স 3 ≡ 3 (মোড 10 কে + 1 ) (দ্বিপদী সম্প্রসারণ।)
(দ্রষ্টব্য যে অন্য দুটি শর্তাবলী 0 मोड 10 কে + 1 হওয়ায় এড়াতে পারবেন )
3 · ডি কে + 1 এক্স 2 · 10 কে + এক্স 3 ≡ 3 (মোড 10 কে + 1 )

আমরা জানি যে:

       x ≡ 7 (10 মডার)
      এক্স 2 ≡ 49 (10 মড)
         ≡ 9 (10 মড)
  x 2 · 10 কে ≡ 9 · 10 কে   (মোড 10 কে + 1 )
3 · x 2 · 10 কে ≡ 27 · 10 কে (মোড 10 কে + 1 )
         ≡ 7 · 10 কে   (মোড 10 কে + 1 )

এটি প্রতিস্থাপন:

3 · ডি কে + 1 এক্স 2 · 10 কে + এক্স 3 ≡ 3 (মোড 10 কে + 1 )
  7 · ডি কে + 1 · 10 কে + এক্স 3 ≡ 3 (মোড 10 কে + 1 )
             ডি কে + 1 ≡ (3 - এক্স 3 ) ÷ (7 · 10 কে ) (10 মড)
                 ≡ (3 - x 3 ) ÷ (7 · 10 কে ) (10 মড)
           ∴ d কে + 1 ≡ 3 · (3 - x 3 ) k 10 কে    (10 মড 10) (3টি 7 মড 10 এর বিপরীত)

আসলে এই সমাধানটি সর্বোত্তম হতে পারে। ব্যাখ্যা (বেশির ভাগ ভাষায় যেখানে সূত্র চেয়ে নরপশু অত্যাচার কম বাগাড়ম্বরপূর্ণ জন্য) কোথাও খুঁজে পাওয়া যেতে পারে চ্যাট , যদিও বেশ বিক্ষিপ্ত।
ব্যবহারকারী 202729

আপনি "অ Exec" সমাধান, গলফ লক্ষ্য যদি এই একটি ফাংশন পরিবর্তে একটি পূর্ণ প্রোগ্রাম হিসাবে 62 বাইট জন্য কাজ
জনাব Xcoder

এটি কেবল এবং এর 11জন্য শেষ সংখ্যাগুলি মুদ্রণ করে । n=12n=13
Emigna

4
F এবং এক্স কিছু ফন্টে সত্যিই বেশ অনুরূপ দেখায় এবং গণিতগুলি পড়তে অত্যন্ত কঠিন করে তোলে। আমি কি instead এর পরিবর্তে center (সেন্টার ডট) ব্যবহার করার পরামর্শ দিতে পারি? (এবং, স্পষ্টতই, ম্যাথজ্যাক্স রাখা ভাল লাগবে )।
পিটার টেলর



4

05 এ বি 1 ই , 17 13 বাইট

7IGD3mN°÷7*θì

@ ASCII- এর কেবল পাইথন 2 (পাইপাই) এর উত্তর বন্দর ।
-4 বাইটস এবং বাগ-স্থিরীকৃত এমিরিনার সাথে শীর্ষস্থানীয় শূন্যগুলি আউটপুটগুলির জন্য প্রতিস্থাপন T%N°*+করে θì

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

ব্যাখ্যা:

7               # Start result-string `r` at '7'
IG              # Loop `N` in the range [1, input)
  D3m           #  `r` to the power 3
       ÷        #  Integer-divided with
     N°         #  10 to the power `N`
        7*      #  Multiplied by 7
          θì    #  Then take the last digit of this, and prepend it to the result `r`
                # Implicitly output result `r` after the loop

এইচপিউইজ আমার পদ্ধতির গল্ফ করেছে এবং চ্যালেঞ্জটির জন্য এখন আর শীর্ষস্থানীয় শূন্যগুলির প্রয়োজন নেই যাতে আপনি এটি আরও গল্ফ করতে সক্ষম হতে পারেন ?
ASCII- কেবল

@ এএসসিআইআই-কেবল সম্ভবত, তবে কীভাবে তা নিশ্চিত নয়। @Emigna ইতিমধ্যে golfed হয়েছে T%N°*+থেকে θìআমার জন্য, এবং শূন্য 'ফিক্স' এই পদ্ধতির সঙ্গে শুধু একটা চমৎকার বোনাস ছিল।
কেভিন ক্রুইজসেন

4

জাভা 8, 158 156 141 136 135 বাইট

n->{var t=n.valueOf(3);var r=n.ONE;for(int i=0;i++<n.intValue();)r=r.add(t.subtract(r.pow(3)).multiply(t).mod(n.TEN.pow(i)));return r;}

@ ASCII- এর কেবল পাইথন 2 (পাইপাই) এর উত্তর বন্দর ।
-2 ধন্যবাদ বাইট @Neil
-20 ধন্যবাদ বাইট @ হওয়া ASCII শুধুমাত্র

দ্রষ্টব্য: একটি অ্যালগরিদমিক পদ্ধতির ব্যবহার করে @ অলিভিয়ারগ্রোগোয়ারের দ্বারা ইতিমধ্যে জাভা উত্তরটি খুব ছোটmodPow

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

ব্যাখ্যা:

n->{                            // Method with BigInteger as both parameter and return-type
  var t=n.valueOf(3);           //  Temp BigInteger with value 3
  var r=n.ONE;                  //  Result-BigInteger, starting at 1
  for(int i=0;i++<n.intValue();)//  Loop `i` in the range [1, n]
    r=r.add(                    //   Add to the result-BigDecimal:
       t.subtract(r.pow(3))     //    `t` subtracted with `r` to the power 3
       .multiply(t)             //    Multiplied by 3
       .mod(n.TEN.pow(i)));     //    Modulo by 10 to the power `i`
  return r;}                    //  Return the result-BigInteger

ওহ, আপনি কি সেই অ্যালগরিদম ব্যবহার করেছেন? আমি আমার উত্তরটি রোলব্যাক করব এবং আপনাকে পরিবর্তনগুলি যোগ করব;)
অলিভিয়ের গ্রাগোয়ার

java.math.BigInteger u=null,r=u.valueOf(7),t=r;?
নিল

@ নিল অবশ্যই .. ধন্যবাদ। আমার কাছে তা থাকত java.math.BigInteger t=null,r=u.valueOf(7);t=r;প্রাথমিকভাবে আগে আমি যোগ uকিছু বাইট সংরক্ষণ করুন।
কেভিন ক্রুইজসেন


1
* মোডপো, মোডপড নয়: পি
এএসসিআইআই-

4

জাভা (জেডিকে 10) , 106 বাইট

n->n.valueOf(3).modPow(n.valueOf(2).multiply(n=n.TEN.pow(n.intValue())).divide(n.valueOf(3)).add(n.ONE),n)

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

ক্রেডিট


1
লুপে পরিবর্তন করে for(int l=0,d;++l<=n;এবং আমরা পুনরায় ব্যবহার করতে পারি BigInteger I=null;এমন পরিবর্তন করে 166 বাইটvar I=new BigInteger("3");
কেভিন ক্রুইজসেন

1
লুপটি পরিবর্তন করে সংরক্ষণ করতে আরও 1 টি বাইট for(int l=0,d;l++<n;)
কেভিন ক্রুজসেন



2

হাস্কেল , 37 বাইট

কেবলমাত্র ASCII- কে 1 বাইট সংরক্ষিত!

(10!1!!)
n!x=x:(n*10)!mod(9-3*x^3+x)n

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

আমি কেবল এএসসিআইআই-তে অনুরূপ পন্থা ব্যবহার করি, তবে আমি বিভাগটি ব্যবহার করা এড়িয়ে চলি



1

পাইথ , 23 বাইট

অবশ্যই, এটি কেবলমাত্র ASCII- এর পদ্ধতির ব্যবহার করে।

K7em=+K*%*7/^K3J^TdTJtU

এখানে চেষ্টা করুন!


1
@ ডিজিটালট্রামা ওহ> _ <আমি শপথ করছি আমি আপনার উত্তরটি লক্ষ্য করিনি lol ... আমি প্রথমে ASCII এর সমাধানের একটি বন্দর পেয়েছিলাম, তারপরে আমি xnor দেখেছিলাম এবং আমি এটি সরাসরি গল্ফটিতে পোর্ট করেছিলাম: পিআই অনুমান আমি প্রাথমিক সংশোধনটিতে রোলব্যাক করব যদিও।
মিঃ এক্সকডার

1

কাঠকয়লা , 26 22 বাইট

≔⁷ηFN≧⁺﹪׳⁻³Xη³Xχ⊕ιηIη

এটি অনলাইন চেষ্টা করুন! লিঙ্কটি কোডটির ভার্জোজ সংস্করণ। ব্যাখ্যা:

≔⁷η

ফলাফলটি 7. এ শুরু করুন (7 হতে হবে না তবে 0 কাজ করে না))

FN

প্রয়োজনীয় সংখ্যার উপরে লুপ করুন।

        η       Current result.
       X ³     Take the cube. 
     ⁻³         Subtract from 3.
   ׳           Multiply by 3.
            ⊕ι  Increment the loop index.
          Xχ    Get that power of 10.
  ﹪             Modulo
≧⁺            η Add to the result.

4 বাইট সংরক্ষণের জন্য এখন @ এইচপিউইজের পদ্ধতির ব্যবহার করুন।

Iη

ফলাফল মুদ্রণ করুন।

এখানে একটি 28-বাইট ব্রুট-ফোর্স সংস্করণ যা স্বেচ্ছাসেবী মানগুলির ঘনমূল ধরে:

FN⊞υ⊟Φχ¬﹪⁻XI⁺κ⭆⮌υμ³IηXχ⊕ι↓Iυ

এটি অনলাইন চেষ্টা করুন! লিঙ্কটি কোডটির ভার্জোজ সংস্করণ। প্রথম ইনপুটটি সংখ্যাগুলির সংখ্যা, দ্বিতীয়টি মূলের মান to


এইচপিউইজ আমার পদ্ধতির আপডেট হয়েছে (পড়ুন: গল্ফড)। লিকি নুন প্রয়োজনীয়তা আপডেট করেছে বলে স্ট্রিংম্যাপের আর দরকার নেই। এছাড়াও প্রথম লিঙ্কটিও নিষ্ঠুর বলের সংস্করণ> _>
এএসসিআইআই-

@ এএসসিআইআই কেবল ধন্যবাদ, আমি লিঙ্কগুলি স্থির করেছি এবং এইচপিউইজের পদ্ধতির প্রতিস্থাপন করেছি, তবে স্ট্রিংম্যাপের kবিপরীত তালিকাটি বেস 10 নম্বর হিসাবে সংযুক্ত করার জন্য আমার প্রয়োজন ছিল ।
নীল

হুম। আমি ভেবেছিলাম কেবল এটি করা সহজ প্লেইন নম্বর উপায়ে গল্ফিয়ার হতে পারে। যদিও আমি অনুমান করি না
ASCII- কেবল

@ এএসসিআইআই-কেবলমাত্র পূর্ববর্তী সংস্করণটির জন্য আমি ব্যবহার করেছি Base(Reverse(u), 10)তবে উপস্থাপনের জন্য k4 বাইট লাগতে পারে যখন স্ট্রিং হিসাবে এটি করার জন্য কেবল 2 বাইট খরচ হয় যার ফলে Castঅ্যাকাউন্টটি গ্রহণের পরে 1 বাইট সাশ্রয় হয় ।
নীল


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