बीटनिक , 888 बाइट्स
k I
j k ZZZZX z
xw k C vp yQ KD xw z j k ZZZZX z
j k ZZZD z xw bZ ZX
k XX z qs xw vp xw xw vp xw vp vp vp k I Xj ZZD hd
xw yQ K k ZZZZX xo exx
qs yQ XA xw xw xw xw z xw bZ K
xw xw k I
j k ZZZZX z
xw k C vp yQ XA hd k I z j k ZZZZX z
j xw k A vp bZ ZX
k ZZZZX z qs xw vp xw xw vp xw vp vp vp k I Xj ZZD hd
xw yQ K k ZZZZX xo exx
qs yQ F k ZZZZK xo
vp
xw xw z qs xw bZ X xw k I z xw Xj K
qs xw bZ KA vp qs xw Xj C hd
qs z xw xw xw xw z qs
xw xw xw xw z qs k I qs k I z xw Xj ZC
qs bZ ZZZX qs xw yQ C hd xw
k I vp qs k I qs
xw Xj ZZC hd hd z Kz ZZD
k I z xw xw xw xw z qs k I qs k I Xj ZZZZF
z
xw xw z qs xw bZ X xw k I z xw Xj K
qs xw bZ KA vp qs xw Xj C hd
z qs xw
xw xw z qs xw bZ X xw k I z xw Xj K
qs xw bZ KA vp qs xw Xj C hd
z vp
xw xw z qs
xw xw z qs
k I qs
xw bZ ZZX k I z qs k I vp
xw k ZA z yQ ZA hd qs k I vp qs k I Xj ZZKD
qs xw Xj ZZK
hd qs xw Xj ZZZZ hd
k ZZZZKD vp xo xw Xj K
इसे ऑनलाइन आज़माएं!
मैं सी दुभाषिया का उपयोग कर रहा हूं क्योंकि टीआईओ पर पायथन दुभाषिया ने पते को निष्पादित किया है अगर बैकप जंपिंग के लिए शर्त पूरी नहीं हुई है। पाइथन इंटरप्रेटर के लिए एक आसान समाधान पता एनओपी बनाने के लिए कुछ नोड्स को पैड करना है। मेरा मानना है कि न तो सही है:
C Python My interpretation
IP after skiping N words IP+N+1 IP+N+2 IP+N+2
IP after skiping back N words IP-N IP-N+1 IP-N+2
IP after not skiping N words IP+2 IP+2 IP+2
IP after not skiping back N words IP+2 IP+1 IP+2
इनपुट दो पूर्णांक होना चाहिए जो किसी स्थान से अलग हो, बिना नई रूपरेखा के अनुगामी हो।
यह उत्तर सभी पूर्णांकों के लिए सिद्धांत रूप में काम करता है, यदि प्रत्येक कोशिका एक मनमाने ढंग से बड़े मूल्य को स्टोर कर सकती है, केवल 0 - 255 तक सीमित नहीं है। लेकिन यह ओवरफ्लो होता है यदि | A | + | B | > 22. और यह बहुत धीमी गति से चलता है अगर | A | + | B | > 6. तो ऐसे कई मामले नहीं हैं जो आप वास्तव में परीक्षण कर सकते हैं और उन मामलों के लिए एक-और समाधान भी कम हो सकता है।
विचार त्रिकोणीय संख्याओं T (N) = N (N + 1) / 2 को 0 मान को घटाकर और सभी मध्यवर्ती मानों की गणना करने के लिए है। तब हम उत्तर प्राप्त कर सकते हैं ए * बी = टी (ए + बी) - टी (ए) - टी (बी)।
लेकिन सभी 3 मानों की गणना करना मुश्किल है। यह पहले T (A + B) की गणना करके करता है - A, बाद में वापस जोड़ने के लिए स्टैक में A की एक कॉपी छोड़कर, और इनपुट B का उपयोग करके। फिर पुनरावर्ती से सबसे बड़ी त्रिभुजाकार संख्या ज्ञात करें, जो T है ( शून्य विशेष मामलों को छोड़कर A + B-1)। हम वहां से B = T (A + B) - A - T (A + B-1) और कंप्यूट T (B) प्राप्त कर सकते हैं।
संख्या N एक त्रिकोणीय संख्या है यदि यह N से छोटी सबसे बड़ी त्रिकोणीय संख्या के बराबर है, साथ ही N से छोटी गैर-ऋणात्मक त्रिकोणीय संख्या है। यह O (2 ^ (T (A + B) -A) में चलती है। और कार्यक्रम का सबसे धीमा हिस्सा है।
k I Push 1
j k ZZZZKAAA z Input and decrement by 48.
xw k AAA vp yQ (input_a_loop) If the character was '-':
xw z j k ZZZZKAAA z Replace with 0 and input another.
input_a_loop:
j k ZZZAA z xw bZ (input_a_end) Input and break if it is a space.
k ZKA z qs xw vp xw xw vp xw vp vp vp Otherwise multiply the previous
value by 10 and add.
k I Xj (input_a_loop) Continue the loop.
input_a_end: hd Discard the space.
xw yQ (check_sign) k ZZZZKAAA xo exx If A=0, print 0 and exit.
Stack: ?, A_is_positive, A
check_sign:
qs yQ (check_sign_else) If A is positive... or not,
xw xw xw xw z xw bZ (check_sign_end) in either cases, push 2 copies
check_sign_else: xw xw k I of A and the negated flag back
check_sign_end: as a constant.
Stack: A, A, A, A_is_negative
j k ZZZZKAAA z Similar for B.
xw k AAA vp yQ (input_b_loop) If the character was '-':
hd k I z j k ZZZZKAAA z Decrement the flag and input another.
input_b_loop:
j xw k A vp bZ (input_b_end) EOF is checked instead of a space.
k ZZZZKAAA z qs xw vp xw xw vp xw vp vp vp
k I Xj (input_b_loop)
input_b_end: hd
xw yQ (output_sign) k ZZZZKAAA xo exx If B=0, print 0 and exit.
Stack: A, A, A, A*B_is_negative, B
output_sign:
qs yQ (output_sign_end) k ZZZZK xo If negative, output '-'.
output_sign_end:
vp Add. Stack: A, A, A+B
xw xw z qs Insert a 0. Stack: A, A, 0, A+B.
xw bZ { xw k I z xw Xj } Copy and decrement while nonzero.
Stack: A, A, 0, A+B, A+B-1, ..., 0
qs xw bZ { vp qs xw Xj } hd Add while the second value in the
stack is nonzero.
Stack: A, A, T(A+B)
qs z xw xw xw xw z qs Stack: A, C0=T(A+B)-A, C0, F0=0, C0
expand_loop:
xw xw xw xw z qs k I qs Stack: A, C0, C0, F0=0,
..., [P=C, P, S=0, F=1], C
dec_expand: k I z xw Xj (expand_loop) Decrement and continue if nonzero.
Stack: [P=1, P, S, F], C=0
The last number 0 is assumed to
be a triangular number.
test: qs bZ (extract_end) If F=0, break.
qs xw yQ (test_not_first) hd xw If S=0, it's the first triangular
number below previous C. Set S=C.
test_not_first: k I vp qs k I qs S+=1 and restore F=1.
xw Xj (dec_expand) If C!=0, recursively expand from C-1.
hd hd z Kz (test) If S=P, P is a triangular number,
return to the previous level.
k I z xw xw xw xw z qs k I qs Otherwise, decrement P and try again.
k I Xj (dec_expand)
extract_end: Stack: A, C0, C0, T(A+B-1)
z Subtract and get B.
xw xw z qs xw bZ { xw k I z xw Xj } Computes T(B).
qs xw bZ { vp qs xw Xj } hd
Stack: A, C0, T(B)
z qs xw Stack: C0-T(B), A, A
xw xw z qs xw bZ { xw k I z xw Xj } Computes T(A).
qs xw bZ { vp qs xw Xj } hd
z vp Get A*B=(C0-T(B))+(A-T(A))
xw xw z qs Stack: 0, X=A*B
divide: xw xw z qs Stack: 0, ..., Y=0, X
subtract: k I qs Stack: 0, ..., Y, Z=1, X
xw bZ { While X!=0:
k I z qs k I vp X-=1, Z+=1.
xw k ZA z yQ (not_ten) But if Z=11:
hd qs k I vp qs k I Xj (subtract) Y+=1, reset Z and restart the loop.
not_ten: qs xw Xj }
hd qs xw Xj (divide) Put Z under Y and make Y the new X,
continue the loop if X!=0.
hd Discard X.
print_loop:
k ZZZZKAA vp xo xw Xj (print_loop) Add each cell by 47 and print.