সুরেলা সিরিজের ডিনোমিনেটর


16

এর আগে আমরা কি pseudofactorial একটি সংখ্যা, যা থেকে সংখ্যার LCM হয় 1থেকে n

একসাথে ভগ্নাংশ যুক্ত করতে এটি কার্যকর হবে।

যাইহোক, আমরা যে হর 1/1 + 1/2 + 1/3 + 1/4 + 1/5 + 1/6হয় 20এর pseudofactorial পরিবর্তে 6, যা 60

আপনার কাজ হ'ল 1/1 + 1/2 + ... + 1/nপ্রদত্ত ধনাত্মক পূর্ণসংখ্যার ডোনমিনেটর খুঁজে পাওয়া n

Testcases

 n result
 1 1
 2 2
 3 6
 4 12
 5 60
 6 20
 7 140
 8 280
 9 2520
10 2520
11 27720
12 27720
13 360360
14 360360
15 360360
16 720720
17 12252240
18 4084080
19 77597520
20 15519504
21 5173168
22 5173168
23 118982864
24 356948592
25 8923714800
26 8923714800
27 80313433200
28 80313433200
29 2329089562800
30 2329089562800

তথ্যসূত্র

লিডারবোর্ড


এটির জন্য কত বড় ইনপুট কাজ করতে হয়?
ব্র্যাড গিলবার্ট বি 2 গিলস

@ ব্র্যাডগিলবার্টব 2 গিলস যতটা বড় যুক্তিসঙ্গত।
ফুটো নুন

উত্তর:


8

এম , 9 6 বাইট

FryAmTheEggman 3 বাইট সংরক্ষণ করার জন্য ধন্যবাদ ! কোড:

RİSg¹İ

এম এর বিশাল সুবিধা এখানে রয়েছে কারণ এটি ভাসমানের চেয়ে ভগ্নাংশের সাথে কাজ করে। ব্যাখ্যা:

R       # Get the list [1 ... n].
 İ      # Inverse each, resulting into [1/1, 1/2, 1/3, ..., 1/n].
  S     # Sum it up. (86021/27720 for n=12)
   g¹   # Compute the greatest common denominator with n. (1/27720 for n=12)
     İ  # Calculate the inverse again. (27720 for n=12)

জেলি এনকোডিং ব্যবহার করে । এটি অনলাইন চেষ্টা করুন!


এছাড়াও, একটি আছে 4-বাইট সমাধান রয়েছে, যা মাঝে মাঝে শূন্যকে আউটপুট করে (যেমন 280 -> 0280)। আমি নিশ্চিত না যে এটি অনুমোদিত হয়েছে কি না:

RİSV

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


1
1. 6-বাইট কোডের ব্যাখ্যাটি বেশ সঠিক নয়। ভগ্নাংশের গ্রেটস্ট সাধারণ বিভাজক এবং গণনা করে এন । ব্যবহার g1সম্ভবত পরিষ্কার হতে পারে। 2. Vভগ্নাংশটি একটি স্ট্রিংয়ে ফেলে এবং এটিকে নীলাদাক্রমে বিমুক্ত করে। <num>/একটি (নন-ক্রমযুক্ত) একটি নীলাদিক অপারেটর দ্বারা হ্রাস। এটি আজেবাজে কথা, তবে যেহেতু কেবলমাত্র একটি সংখ্যা রয়েছে (অন্তর্নিহিত যুক্তি 0 ), এটি কেবল কিছুই করে না। পরের লিঙ্কটি, ডিনোমিনেটর নীলাদিক, সুতরাং পূর্ববর্তী রিটার্ন মানটি ছাপিয়ে মুদ্রিত হয় এবং সেই নীলাদ দিয়ে প্রতিস্থাপন করা হয়।
ডেনিস

@ ডেনিস ধন্যবাদ! ব্যাখ্যা স্থির।
আদনান

@ আদনান এম এর জন্য কোনও দলিল আছে?
ফলটি Esolanging

@ চ্যালেঞ্জার 5 যে আমি জানি না Not এটি আসলে জেলির একটি বৈকল্পিক, তবে নির্বিচারে নির্ভুলতার ভগ্নাংশের সাথে। জেলি ডকুমেন্টেশন ব্যবহার করা যেতে পারে, তবে জাগ্রত থাকুন যে জেলিতে প্রয়োগ করা অনেকগুলি বৈশিষ্ট্য এম তে প্রয়োগ করা হয়নি
আদনান


4

গণিত, 27 বাইট

একটি বেনামী ফাংশন।

Denominator@*HarmonicNumber

উদাহরণ স্বরূপ:

 In[1] := (Denominator@*HarmonicNumber)[10]
 Out[1] = 2520


উহু! মার্টিনকে যদি সে পছন্দ করে তবে আমার সেই পোস্টটি দেওয়া উচিত। এইটি আদৌ আক্ষরিক, তাই আমি এটি রাখব।
লিন

কোডটি কীভাবে ব্যবহৃত হয় আপনি উদাহরণ দিয়ে দেবেন?
ডেভিডসি

3

পাইথন 2, 69 67 বাইট

a=b=k=r=1
exec'a=a*k+b;b*=k;k+=1;'*input()
while r*a%b:r+=1
print r

আইডিয়নে এটি পরীক্ষা করুন ।

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

এইচ (এন) কে প্রথম এন ধনাত্মক পূর্ণসংখ্যার গুণক বিপরীতের যোগফল হিসাবে ধরা যাক । সর্বদা, আমাদের কাছে এ / বি = 1 + এইচ (কে - 1) থাকে । প্রকৃতপক্ষে, , এবং কে সবগুলিই 1 থেকে শুরু করা হয়েছে এবং 1/1 = 1 = 1 + এইচ (0)

আমরা কোড স্নিপেট পুনরাবৃত্তি

a=a*k+b;b*=k;k+=1;

(একটি স্ট্রিং হিসাবে) এন (ইনপুট) বার এবং ফলাফল কার্যকর। প্রতিটি পদক্ষেপে, আমরা পরিচয় ব্যবহার করে একটি , বি এবং কে আপডেট করি A / B + 1 / ট = AK / বি কে + খ / বি কে = (AK + খ) / বি কে

পরে সব কপি মৃত্যুদন্ড কার্যকর করা হয়েছে, A / B = 1 + + এইচ (ঢ) , যা হিসাবে একই হর হয়েছে এইচ (ঢ)

পূর্ণ কমে ফর্ম A / B হয় (ক ÷ GCD (ক, খ)) / (খ ÷ GCD (ক, খ)) । এর পরিবর্তে সাধারণ গুণনীয়ক গণক, আমরা আরম্ভ R যেমন 1 এবং বৃদ্ধিশীল রাখা পর্যন্ত রা এর গুণিতক হয়

স্পষ্টত, এই তোলে রা লঘিষ্ট সাধারণ গুণিতক একটি এবং । যেহেতু gcd (a, b) · lcm (a, b) = ab , আমাদের কাছে সেই b ÷ gcd (a, b) = lcm (a, b) ÷ a = ra ÷ a = r , r তৈরি করে কাঙ্ক্ষিত আউটপুট।


3

হাস্কেল, 52

Import Data.Ratio
f n=denominator$sum[1%k|k<-[1..n]]

যদি ফাইলটি জিএইচসিআই-তে লোড করা থাকে তবে f একটি ফাংশন হিসাবে ব্যবহৃত হতে পারে।


1
সম্ভবত আপনি importছোট হাত মানে ? এটি mapবোঝার পরিবর্তে একটি বাইট ব্যবহার করে সংরক্ষণ করে :sum$map(1%)[1..n]
xnor


2

এমএটিএল , 14 13 বাইট

:p:G:!/s1\&X<

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

ব্যাখ্যা

ইনপুট এন এর জন্য , আউটপুটটি এন দ্বারা উপরের-সীমিত হয় ! ( এন এর ফ্যাকটোরিয়াল ) কোড নির্ণয় এন / জন্য এন = 1, ..., এন ! এবং কে = 1, ..., এন এর জন্য । তারপরে এটি কে এর চেয়েও বেশি , যা প্রতিটি এন দ্বারা গুণিত সুরেলা সংখ্যা দেয় । পছন্দসই ফলাফলটি হ'ল মানগুলির মধ্যে প্রথমটির সূচক n যা পূর্ণসংখ্যা হয়।


2

রুবি, 57 47 বাইট

->n{(1..n).reduce{|a,i|a+1.to_r/i}.denominator}

কেভিন লউকে দশটি বাইট দ্বারা সংক্ষিপ্ত করার জন্য ধন্যবাদ ।


একটি ভেরিয়েবল বরাদ্দ করুন 1.to_rযাতে আপনার স্ট্রিং ইঞ্জেকশন এবং রূপান্তর করতে হবে না। এছাড়াও, যেহেতু রুবির ডিফল্ট reduceপ্রথম উপাদানটিকে প্রাথমিক হিসাবে ব্যবহার করা হয় এবং প্রাথমিকভাবে 1/1=1আপনাকে 0প্রাথমিক মান হিসাবে সেট করার দরকার নেই ।
মূল্য কালি

2

গণিত, 26 বাইট

Denominator@Tr[1/Range@#]&

একটি নামবিহীন ফাংশন nইনপুট হিসাবে গ্রহণ করে এবং ডিনোমিনেটরকে ফিরিয়ে দেয়। পারিশ্রমিকের Trতালিকা যোগ করতে আপত্তিজনক (ট্রেস) স্ট্যান্ডার্ড ট্রিক ব্যবহার করে ।


1

জাভাস্ক্রিপ্ট (ES6), 88 বাইট

m=>{for(d=1,i=0;i<m;d*=++i);for(n=i=0;i<m;n+=d/++i);for(g=d;g;[g,n]=[n%g,g]);return d/n}

জাভা স্ক্রিপ্টের সংখ্যার যথার্থতার সীমাবদ্ধতার কারণে কেবলমাত্র মি = 20 পর্যন্ত কাজ করে।


1

05 এ বি 1 ই , 8 বাইট

কোড:

!йL/O¿/

ব্যাখ্যা:

!         # Take the factorial of the input.
 Ð        # Triplicate this.
  ¹L      # Get the list [1 ... input].
    /O    # Divide and sum up.
      ¿   # Get the GCD of the sum and the factorial.
       /  # Divide the factorial by this.

পাইথনের বিভাগের কারণে এন> 19 এর জন্য কিছু সঠিকতার সমস্যা থাকতে পারে ... সিপি -1222 ব্যবহার করে এনকোডিং ।

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



0

জে, 20 বাইট

(!%!+.[:+/!%1+i.)@x:

@ লিনের সমাধান দ্বারা ব্যবহৃত পদ্ধতির উপর ভিত্তি করে ।

এন এর বৃহত মানগুলির জন্য যদি নির্ভুলতা প্রয়োজনীয় না হয় বা আমরা ধরে নিতে পারি তবে এন বর্ধিত পূর্ণসংখ্যা হিসাবে পাস হবে, যার দ্বারা প্রত্যয়িত হবে x, একটি সংক্ষিপ্ত সমাধান 15 বাইটের জন্য ব্যবহার করা যেতে পারে ।

!%!+.[:+/!%1+i.

ব্যবহার

   f =: (!%!+.[:+/!%1+i.)@x:
   f 30
2329089562800
   (,:f"0) >: i. 15
1 2 3  4  5  6   7   8    9   10    11    12     13     14     15
1 2 6 12 60 20 140 280 2520 2520 27720 27720 360360 360360 360360

ব্যাখ্যা

(!%!+.[:+/!%1+i.)@x:  Input: n
                  x:  Convert n into an extended integer
              i.      Creates the range [0, 1, ..., n-1]
            1+        Add one to each, range is now [1, 2, ..., n]
          !           Get factorial of n
           %          Divide n! by each value in the range [1, 2, ..., n]
      [:+/            Sum those values
   !                  Get n!
    +.                Get gcd between n! and the sum
 !                    Get n!
  %                   Divide n! by the gcd and return

0

পার্ল 6 ,  36  32 বাইট

{([+] 1.FatRat X/1..$_).denominator}
{([+] 1.FatRat X/1..$_).nude[1]}

ব্যাখ্যা:

{
  (
    [+]        # reduce with &infix:<+>

      # the following produces a Seq of Rational numbers
      # 1/1, 1/2, 1/3 ... 1/n

      1.FatRat # FatRat.new: 1,1
      X/       # crossed using &infix:</>
      1 .. $_  # Range from 1 to the input inclusive

  ) # resulting in a FatRat

  .nude # (nu)merator (de)nominator
  .[1]  # grab the denominator
}

টেস্ট:

my &hd = {([+] 1.FatRat X/1..$_).nude[1]}

say (1..10)».&hd; # (1 2 6 12 60 20 140 280 2520 2520)

say hd 100; # 2788815009188499086581352357412492142272
say chars hd 1000; # 433
say chars hd 10000; # 4345

0

হুন , 95 বাইট

|=
@
=+
n=(gulf 1 +<)
=+
f=(roll n mul)
(div f d:(egcd f (roll (turn n |=(@ (div f +<))) add)))

ফ্যাক্টরিয়ালটির জন্য তালিকা তৈরি করুন [1...n], তার উপর ভাঁজ করুন, তালিকা তৈরি করুন এবং এটির যোগফল ++mulতৈরি করুন [n!/1, n!/2, ... n!/n], এর জিসিডি n!এবং তালিকাটি সন্ধান করুন এবং সেই সংখ্যার সাথে ফ্যাক্টরিয়ালটি ভাগ করুন।

ডিনোমিনেটর গণনা করার জন্য সম্ভবত আরও সহজ উপায় আছে তবে আমি তা বুঝতে পারি না: /


ওহে হুন, আপনার টোকনাইজারকে এত বেশি রিয়ন্ডান হোয়াইটস্পেসের প্রয়োজন কেন?
লিকি নুন

আমার সমস্ত হুন এন্ট্রিগুলি
নিউলাইনগুলির কারণে কুরুচিপূর্ণ দেখাচ্ছে

0

পাইথন 3, 153 150 146 142 বাইট

আমি নিশ্চিত যে এটি আরও গল্ফ করতে পারে। তবে আমি এখানে নতুন

f=lambda x:0**x or x*f(x-1)
z=int(input());i=f(z)
r=sum(i/y for y in range(1,z+1))  
p=lambda a,b:a if b<1else not a%b+b or p(b,a%b)
print(i/p(r,i))

পিপিসিজিতে আপনাকে স্বাগতম!
ফাঁস নুন

0

অ্যাক্সিয়োম, 34 বাইট

f(x)==denominator(sum(1/n,n=1..x))

পরীক্ষা

(24) -> [[i,f(i)] for i in 1..30]
   (24)
   [[1,1], [2,2], [3,6], [4,12], [5,60], [6,20], [7,140], [8,280], [9,2520],
    [10,2520], [11,27720], [12,27720], [13,360360], [14,360360], [15,360360],
    [16,720720], [17,12252240], [18,4084080], [19,77597520], [20,15519504],
    [21,5173168], [22,5173168], [23,118982864], [24,356948592],
    [25,8923714800], [26,8923714800], [27,80313433200], [28,80313433200],
    [29,2329089562800], [30,2329089562800]]
                                       Type: List List Expression Integer

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