ऊपरी Divmod की गणना करें


13

कार्य

दो पॉजिटिव पूर्णांक (विभाजन e nd और divis o r) को देखते हुए , q uotient और r emainder की गणना करें ।
आम तौर पर यह गणना की जाएगी कि e = o*q+rकहां q*o<=eऔर कैसे 0<=r<o
इस चुनौती के लिए यह अभी भी e = o*q+rलेकिन q*o>=eऔर -o<r<=0
उदाहरण के लिए e=20और o=3, सामान्य रूप से यह होगा 20/3 -> 20=3*6+2, के बाद से 18<=20और 0<=2<3। यहां यह 20/3 -> 20=3*7-1कहां 21>=20और कहां होगा-3<-1<=0

परीक्षण के मामलों

Input -> Output
20, 3 -> 7, -1
10, 5 -> 2, 0
7, 20 -> 1, -13
100, 13 -> 8, -4

आपको संभालने की आवश्यकता नहीं है o=0


3
इसे नियमित दिव्यांग का एक तुच्छ संस्करण कहा जाता है।
नील

क्या यह rउन rभाषाओं के लिए वास्तविक के रूप में आउटपुट के लिए स्वीकार्य है जो डेटा को संग्रहीत करने या अतिप्रवाह करने के लिए अहस्ताक्षरित बाइट्स का उपयोग करती है? ( -11/ 255)
उरियेल

@ युरील हाँ, लेकिन उत्तर पर इसके बारे में एक नोट जोड़ें
रॉड

जवाबों:


8

पायथन 3 , 39 26 बाइट्स

मार्टिन एंडर ने 13 बाइट्स बचाए

lambda x,y:(-(x//-y),x%-y)

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

पायथन 2 , 25 बाइट्स

lambda x,y:(-(x/-y),x%-y)

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


मुझे लगता है कि आप केवल x%-yशेष पाने के लिए कर सकते हैं ।
मार्टिन एंडर

वास्तव में, सभी रास्ते क्यों नहीं चलते ...(-(x//-y),x%-y)
मार्टिन एंडर

@MartinEnder वास्तव में बहुत अच्छा है
Halvardamm

@ Mr.Xcoder में दोनों शामिल थे
Halvardamm

8

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

NdN

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

यह काम किस प्रकार करता है

Divmod को फिर से गाली देना \ _ /। देखो माँ 'कोई यूनिकोड नहीं!

एनडीएन - पूर्ण कार्यक्रम / डायैडिक श्रृंखला। | उदाहरण: 7, 20

एन - नेगट पहला इनपुट। | -7
 डी - दूसरा एक द्वारा Divmod। | [-1, 13]
  एन - नेगेट प्रत्येक फिर से। | [१, -१३]


5

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

{s=⌈#/#2⌉,#-#2s}&

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


क्या आप एक स्पष्टीकरण जोड़ सकते हैं, कृपया?
रॉड

2
@ रोड ⌈#/#2⌉उनके विभाजन की छत की गणना करता है, और इसे एक चर में संग्रहीत करता है s, और फिर तर्क 1 से तर्क 2 * s को
घटाता है

1
@ Mr.Xcoder आप तेज हैं!
J42161217

5

05AB1E , 4 बाइट्स

(s‰(

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

5 बाइट्स

(‰ćÄJ

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

वे कैसे काम करते हैं

पाइथन के मॉडुलो को गाली देता है! \ O /

(s B | पूरा कार्यक्रम। A और B दो इनपुट होने दें। उदाहरण: 100, 13

(- कंप्यूट एए | -100 |
 s | स्वैप (इस मामले में, स्टैक को उल्टा करें)। | 13, -100
  ‰ | Divmod। | [-8, ४]
   (- नकारात्मक (प्रत्येक को 1 से गुणा करें, मूल रूप से)। [8, -4]

-------------------------------------------------- -

((ƉJ | पूर्ण कार्यक्रम। रिवर्स ऑर्डर में इनपुट लेता है।

(-। नकारात्मक। पुश-ए।
 ‰ | Divmod
  ć | पुश हेड एक्सट्रैक्टेड डीमोड (स्टैक [भागफल, [शेष]] बनाएं)।
   Ä | पूर्ण मान (भागफल पर संचालित)।
    जे | स्टैक में शामिल हों।

आह हाँ, यह भूल गए कि डिवमॉड नकारात्मक संख्याओं के साथ काम करता है :)
एमिग्ना

और यह भी, यह नई कार्यक्षमता Jनहीं है? ऐसा पहले कभी नहीं देखा। निश्चित रूप से उपयोगी हो सकता है।
Emigna

@Emigna इसे Join के रूप में वर्णित किया गया है पुश '' .join (a) यदि एक सूची है; एल्स, पुश '' .जॉइन (स्टैक) । मुझे लगता है कि यह नई कार्यक्षमता है, हालांकि मैंने Jपहले कभी इस्तेमाल नहीं किया है : पी
श्री एक्सकोडर

यह निश्चित रूप से नया है। अगस्त से अपने स्थानीय संस्करण पर की कोशिश की और 5)6देता है ['5']6:)
Emigna

4

ऐलिस , 15 बाइट्स

/O.
\io/R%e,R:R

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

व्याख्या

रूबी के पूर्णांक विभाजन और मोडुलो (जिस पर ऐलिस लागू होते हैं) को इस तरह परिभाषित किया जाता है कि एक नकारात्मक विभाजक का उपयोग करके पहले से ही हम चाहते हैं कि वह क्या चाहता है। यदि हमने भाजक को नकार दिया तो हमें स्वतः ही सही मोड्यूल मिल जाता है, और हमें वह भागफल प्राप्त होता है जो हम चाहते हैं। तो इसे हल करने का सबसे आसान तरीका संख्याओं का एक समूह है:

/   Switch to Ordinal mode.
i   Read all input as a string "e o".
.   Duplicate the string.
/   Switch to Cardinal mode.
R   Implicitly convert the top string to the two integer values it
    contains and negate o.
%   Compute e%-o.
e,  Swap the remainder with the other copy of the input string. We can't
    use the usual ~ for swapping because that would convert the string 
    to the two numbers first and we'd swap e%-o in between e and o instead
    of to the bottom of the string.
R   Negate o again.
:   Compute e/-o.
R   Negate the result again.
\   Switch to Ordinal mode.
O   Output -(e/-o) with a trailing linefeed.
o   Output e%-o.

    The code now bounces through the code for a while, not doing much except
    printing a trailing linefeed when hitting O again. Eventually, the IP
    reaches : and attempts a division by zero which terminates the program.




2

जे , 16 बाइट्स

([-]*a),~a=.>.@%

यह अनिवार्य रूप से जेनी_मैथी के गणितज्ञ समाधान जे में फिर से लिखा गया है।

यह काम किस प्रकार करता है:

a=.>.@% बाएँ और दाएँ तर्कों के विभाजन की छत को ढूँढता है और उसे चर a में संग्रहीत करता है

,~ समाप्‍त (उलटा)

([-]*a) बाएं तर्क से * सही तर्क को घटाता है

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



2

आम लिस्प, 7 बाइट्स

अंतर्निहित फ़ंक्शन ceilingदो मान लौटाता है: भागफल की छत और मिलान करने के लिए शेष:

$ clisp -q
[1]> (ceiling 20 7)
3 ;
-1

2

जावास्क्रिप्ट (ईएस 6), 37 31 29 27 25 बाइट्स

सहेजे गए 2 बाइट्स @Rod
के लिए धन्यवाद 2 बाइट्स @ETHproductions के लिए धन्यवाद

करी सिंटैक्स में इनपुट लेता है। रिटर्न [q, r]

a=>b=>[q=~-a/b+1|0,a-q*b]

परीक्षण के मामलों


आप संभवतः q=(a+b-1)/b+|0इसके बजायq=a/b+.9|0
रॉड

@ETHproductions एक योजना की तरह लगता है। ;)
अरनौलड


1

4 , 55 50 बाइट्स

3.711712114001231311141130013513213131211513115154

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

भाषा द्वारा बाइट इनपुट और आउटपुट का उपयोग करने के बाद से ओपिनियन कॉमेंट द्वारा मान्य माना जाता है, क्योंकि यह नकारात्मकता ( 10इसके बजाय -10) द्वारा अनुस्मारक का प्रतिनिधित्व करता है।






0

सी (जीसीसी) 41 बाइट्स

f(a,b){b=(a+b-1)/b;}g(a,b){b=a-f(a,b)*b;}

यह दो कार्यों का उपयोग करते हुए धोखा हो सकता है और यह अन्य परीक्षणों में विफल हो सकता है?

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



0

SNOBOL4 (CSNOBOL4) , 124 123 105 बाइट्स

 E =INPUT
 O =INPUT
 Q =E / O
 R =E - Q * O
 EQ(0,R) :S(A)
 R =R - O
 Q =Q + 1
A OUTPUT =Q
 OUTPUT =R
END

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

इनपुट के रूप में E, फिर O, एक नई रेखा से अलग हो जाता है और प्रिंट करता है Q, फिर R, एक नई पंक्ति से अलग हो जाता है।


0

TXR: 8 बाइट्स

निर्मित समारोह ceil-rem। जैसे (ceil-rem 20 7)पैदावार (7 -1)



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