সংখ্যা, বিভাজক সংস্করণ গণনা করুন


11

ম্যাথ উপর এই প্রশ্ন দ্বারা অনুপ্রাণিত ।

একটি সংখ্যা উত্তর দিবেন যাক, এন , প্রতিনিধিত্ব করা যেমন পি (ঢ) = 2 একটি এক্স 3 এক্স 5 এক্স ...
(ব্যবহার এক্স গুণ প্রতীক হিসেবে।)
তারপর ভাজক সংখ্যা এন হিসাবে প্রতিনিধিত্ব করা যাবে ডি (ঢ) = (একটি + 1) X (B + 1) X (গ + 1 টি) ...
সুতরাং, আমরা সহজেই বলতে পারি যে 2n এর বিভাজকের সংখ্যা হ'ল ডি (2 এন) = (এ + 2) এক্স (বি + 1) এক্স (সি + 1) ... , 3n
এর বিভাজকের সংখ্যা হ'ল ডি (3 এন) ) = (ক + 1 টি) X (b + 2) এক্স (গ + 1 টি) ... , ইত্যাদি।

চ্যালেঞ্জ:

এমন একটি প্রোগ্রাম বা ফাংশন লিখুন যা নির্দিষ্ট বিভাজক ইনপুট দেওয়া n কে গণনা করতে এই বৈশিষ্ট্যগুলি ব্যবহার করে।

ইনপুট:

পূর্ণসংখ্যার একটি সেট, আসুন নীচের সমস্ত সংজ্ঞা সহ তাদের ডাব্লু, এক্স, ওয়াই, জেড বলুন :

  • সমস্ত ইনপুট 1 এর চেয়ে বড় - w, x, y, z > 1
  • এক্স এবং জেড পৃথক -x<>z
  • এক্স এবং z- র মৌলিক রয়েছে - P(x)=x, D(x)=2এবং P(z)=z,D(z)=2
  • W এর ভাজক সংখ্যা XN -D(xn)=w
  • y হল zn এর বিভাজকের সংখ্যা -D(zn)=y

লিঙ্কযুক্ত প্রশ্নে দেওয়া সমস্যার জন্য, একটি ইনপুট উদাহরণ হতে পারে (28, 2, 30, 3)। এটি অনুবাদ করে D(2n)=28এবং D(3n)=30সাথে n=864

আউটপুট:

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

উদাহরণ:

(w, x, y, z) => output

(28, 2, 30, 3) => 864
(4, 2, 4, 5) => 3
(12, 5, 12, 23) => 12
(14, 3, 20, 7) => 0 (or some other falsey value)
(45, 13, 60, 11) => 1872
(45, 29, 60, 53) => 4176

নিয়মাবলী:

  • স্ট্যান্ডার্ড কোড-গল্ফ বিধি এবং লুফোলের বিধিনিষেধগুলি প্রযোজ্য।
  • স্ট্যান্ডার্ড ইনপুট / আউটপুট বিধি প্রযোজ্য।
  • ইনপুট নম্বরগুলি কোনও ক্রমে থাকতে পারে - আপনি কোন আদেশটি ব্যবহার করছেন তা দয়া করে আপনার উত্তরে নির্দিষ্ট করে দিন।
  • ইনপুট নম্বরগুলি যে কোনও উপযুক্ত বিন্যাসে থাকতে পারে: স্থান দ্বারা পৃথক, একটি অ্যারে, পৃথক ফাংশন বা কমান্ড-লাইন আর্গুমেন্ট ইত্যাদি your আপনার পছন্দ।
  • একইভাবে, যদি STDOUT এ আউটপুট, আশেপাশের সাদা স্থান, নতুন লাইনের পিছনে থাকা ইত্যাদি allচ্ছিক।
  • ইনপুট পার্সিং এবং আউটপুট বিন্যাস এই চ্যালেঞ্জের আকর্ষণীয় বৈশিষ্ট্য নয়।
  • বুদ্ধিমান জটিলতা এবং পূর্ণসংখ্যার উপচে পড়ার স্বার্থে, চ্যালেঞ্জ নম্বর এন এর এমন সীমাবদ্ধতা থাকবে 1 < n < 100000- যেমন, আপনার এই সীমার বাইরে সম্ভাব্য উত্তরগুলি নিয়ে চিন্তা করার দরকার নেই।

সম্পর্কিত


সুতরাং, যদি ক্ষুদ্রতম সমাধানটি 100,000 এর চেয়ে বড় হয়, তবে আমি কোনও সমাধানটি বা শূন্যই ফিরে আসতে বেছে নিতে পারি?
ডেনিস

@ ডেনিস যদি এটি আপনার কোডকে আরও খাটো করে তোলে তবে নিশ্চিত sure হয় গ্রহণযোগ্য হবে।
অ্যাডমবর্কবার্ক

উত্তর:


3

জেলি , 17 16 বাইট

×€ȷ5R¤ÆDL€€Z=Ḅi3

এটি একটি হিংস্র শক্তি সমাধান যা 100,000 পর্যন্ত সমস্ত সম্ভাব্য মান চেষ্টা করে। এটি অনলাইন চেষ্টা করুন!

অ-প্রতিযোগিতামূলক সংস্করণ

জেলির সর্বশেষতম সংস্করণে একটি বাগ ফিক্স রয়েছে যা উপরের কোডটি 15 বাইটে গল্ফ করতে দেয় ।

ȷ5R×€³ÆDL€€=Ḅi3

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

কিভাবে এটা কাজ করে

×€ȷ5R¤ÆDL€€Z=Ḅi3  Main link. Left input: x,z. Right input: w,y

     ¤            Combine the two atoms to the left into a niladic chain.
  ȷ5              Yield 100,000 (1e5).
    R             Apply range. Yields [1, ..., 100,000].
x€                Multiply each r in the range by x and z.
                  This yields [[x, ..., 100,000x], [z, ..., 100,000z]].
      ÆD          Compute the divisors of each resulting integer.
        L€€       Apply length to each list of divisors.
                  This counts the divisors of each integer in the 2D array.
           Z      Zip; group the divisors of kx and kz in pairs.
            =     Compare each [divisors(kx), divisors(kz)] with [w, y].
                  This yields a pair of Booleans.
             Ḅ    Convert each Boolean pair from binary to integer.
              i3  Find the first index of 3. Yields 0 for not found.

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