वर्गों को रकम लिखने के कितने तरीके हैं?


12

कार्य

दो पूर्णांकों को देखते हुए dऔर n, वर्गों के nयोग के रूप में व्यक्त करने के तरीकों की संख्या dज्ञात करें। अर्थात् n == r_1 ^2 + r_2 ^2 + ... + r_d ^2, ऐसा है कि r_mसभी पूर्णांकों के लिए एक पूर्णांक है 1 ≤ m ≤ d। ध्यान दें कि दो गमागमन विभिन्न मूल्यों (जैसे r_1और r_2) मूल समाधान से अलग माना जाता है।

उदाहरण के लिए, संख्या 45 को 2 वर्गों 8 के विभिन्न तरीकों के योग के रूप में लिखा जा सकता है:

45
== (-6)^2 + (-3)^2
== (-6)^2 + 3^2
== (-3)^2 + (-6)^2
== (-3)^2 + 6^2
== 3^2 + (-6)^2
== 3^2 + 6^2
== 6^2 + (-3)^2
== 6^2 + 3^2

नियम

  • अंतर्निहित समाधान की अनुमति है लेकिन गैर-प्रतिस्पर्धात्मक (अहम, गणितज्ञ )
  • मानक खामियों को भी मना किया जाता है।
  • इनपुट उलट हो सकते हैं।

उदाहरण I / O

In:   d, n

In:   1, 0
Out:  1

In:   1, 2
Out:  0

In:   2, 2
Out:  4

In:   2, 45
Out:  8

In:   3, 17
Out:  48

In:   4, 1000
Out:  3744

In:   5, 404
Out:  71440

In:   11, 20
Out:  7217144

In:   22, 333
Out:  1357996551483704981475000

यह , इसलिए सबसे कम बाइट्स जीत का उपयोग करते हुए प्रस्तुतियाँ!


आपने इसे क्यों हटा दिया और एक नया पोस्ट किया है जबकि आप हटाए गए पोस्ट को संपादित कर सकते हैं?
लीक नून

@LeakyNun मेरे ब्राउज़र ने त्रुटियों को फेंक दिया जब मैंने उसे हटाने से पहले भी संपादित करने की कोशिश की।
जंगहवान मिन


1
नहीं, एन 0 है, डी नहीं।
लीक नून

1
@DeadPossum 1, 0परीक्षण मामले के लिए, वर्ग के योग के रूप में 1व्यक्त करने का तरीका है :। 010 == 0^2
जंगहवान मिन

जवाबों:



5

गणितज्ञ, 8 बाइट्स, गैर-प्रतिस्पर्धात्मक

SquaresR

3
इस तरह की भी जरूरत थी ... सवाल में कुछ नया नहीं जोड़ता। : पी
एरिक आउटगॉल्फ

@EriktheOutgolfer प्रश्न को दोष दें; यह स्पष्ट रूप से अनुमति देता है।
जॉली जोकर

उन क्षणों में जहां गैर-अंतर्निर्मित समाधान लगभग अंतर्निहित समाधानों को हरा देते हैं: डी
डेविड मुल्डर

@ जॉलीजॉकर मेरी बात है, जवाब में सवाल के लिए कुछ जोड़ना चाहिए , अन्यथा उन्हें भी क्यों पोस्ट करें? *
श्रग

@DavidMulder मैं पहली बार "लगभग" छूट गया था और थोड़ा सा चौंक गया था ...
एरिक द आउटगलर

5

जेली , 9 बाइट्स

Nr⁸²ṗS€ċ⁸

इसे ऑनलाइन आज़माएं!

लेता है nऔर dइस क्रम में।


आखिरी टेस्टकेस में कितने साल लगेंगे?
लीक नून

@ लाइकुन मैं नहीं जानता, यह मेरी समझ से परे है ...
एरिक द आउटग्राफर

4

MATL , 13 बाइट्स

y_t_&:Z^U!s=s

इनपुट्स nतो हैंd । परीक्षण के कुछ मामले स्मृति से बाहर निकलते हैं।

इसे ऑनलाइन आज़माएं!

व्याख्या

आदानों पर विचार करें 17, 3

y     % Implicit inputs. Duplicate from below
      % STACK: 17, 3, 17
_     % Negate
      % STACK: 17, 3, -17
t_    % Duplicate. Negate
      % STACK: 17, 3, -17, 17
&:    % Two-input range
      % STACK: 17, 3, [-17 -16 ... 17]
Z^    % Cartesian power. Gives a matrix where each Cartesian tuple is a row
      % STACK: 17, [-17 -17 -17; -17 -17 -16; ...; 17 17 17]
U     % Square, element-wise
      % STACK: 17, [289 289 289; 289 289 256; ...; 289 289 289]
!s    % Transpose. Sum of each column
      % STACK: 17, [867 834 ... 867]
=     % Equals?, element-wise
      % STACK: 17, [0 0 ... 0] (there are 48 entries equal to 1 in between)
s     % Sum. Implicit display
      % STACK: 48

3

हास्केल , 43 बाइट्स

0#0=1
d#n=sum[(d-1)#(n-k*k)|d>0,k<-[-n..n]]

बस आपकी मूल पुनरावृत्ति। एक बाइनरी इन्फिक्स फ़ंक्शन को परिभाषित करता है #इसे ऑनलाइन आज़माएं!

व्याख्या

0#0=1            -- If n == d == 0, give 1.
d#n=             -- Otherwise,
 sum[            -- give the sum of
  (d-1)#(n-k*k)  -- these numbers
  |d>0,          -- where d is positive
   k<-[-n..n]]   -- and k is between -n and n.

तो d == 0और n /= 0, हम दूसरे मामले में हैं, और हालत d>0रिक्त सूची का कारण बनता है। रिक्त सूची का योग 0 है, जो इस मामले में सही आउटपुट है।



2

05AB1E , 10 बाइट्स

Ð(Ÿ²ã€nOQO

तर्कों को n के रूप में लेता है, फिर d। बड़े परीक्षण मामलों को हल करने में समस्याएं हैं।

इसे ऑनलाइन आज़माएं!

व्याख्या

Ð(Ÿ²ã€nOQO   Arguments n, d
Ð            Triplicate n on stack
 (           Negate n
  Ÿ          Range: [-n ... n]
   ²ã        Caertesian product of length d
     €n      Square each number
       OQ    Sum of pair equals n
         O   Total sum (number of ones)


2

गणितज्ञ, 38 बाइट्स

Count[Tr/@Tuples[Range[-#,#]^2,#2],#]&

शुद्ध समारोह के क्रम में आदानों लेने n, dRange[-#,#]^2गिनती को सही करने के लिए दो बार सूचीबद्ध सकारात्मक वर्गों के साथ सभी संभवतः प्रासंगिक वर्गों का सेट देता है; ऐसे वर्गों Tuples[...,#2]के d-tuples पैदा करता है ; Tr/@sums प्रत्येक d-tuple; और Count[...,#]गिनता है कि कितने परिणाम बराबर हैं n

पहले कुछ परीक्षण मामले जल्दी समाप्त हो जाते हैं, लेकिन मुझे लगता है कि इस परीक्षण मामले को चलाने में लगभग आधा साल लगेगा 1000,4। लगभग 13 सेकंड तक उस संगणना को Range[-#,#]और अधिक लंबी (अधिक लंबी) Range[-Floor@Sqrt@#,Floor@Sqrt@#]गति से प्रतिस्थापित करना ।


1

गणितज्ञ, ५३ ५१ बाइट्स

SeriesCoefficient[EllipticTheta[3,0,x]^#,{x,0,#2}]&

1

अजगर 2, 138

मेरे प्रिय eval के साथ बहुत ही अक्षम समाधान। क्यों नहीं?
इसे ऑनलाइन आज़माएं

lambda n,d:d and 4*eval(eval("('len({('+'i%s,'*d+'0)'+'for i%s in range(n)'*d+'if '+'i%s**2+'*d+'0==n})')%"+`tuple(range(d)*3)`),locals())

इसने इस तरह कोड उत्पन्न किया और उसका मूल्यांकन किया:

len({(i0,i1,0)for i0 in range(n)for i1 in range(n)if i0**2+i1**2+0==n})

तो कुछ बड़े घ के लिए यह बहुत लंबा चलेगा और बहुत सी मेमोरी का उपभोग करेगा, जिसमें O (n ^ d) की जटिलता हो।



हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.