בביטוי האריתמטי (arithmetic expression) אנחנו משתמשים בארבע פעולות חשבון (אופרטורים): חיבור, חיסור, כפל וחילוק, ובאופרטורים (האופרטורים) עליהם אנחנו מפעילים את האופרטורים.
נתון לנו מספר שלם חיובי ממשי:
אנחנו מעוניינים למצוא את מספר הפעמים (המינימלי החשבונאי) שנפעיל את האופרטורים כדי להגיע למספר result על-ידי שימוש במספרים שמוסרים לנו ובשימוש בארבע פעולות החשבון והחילוק.
הערות חשובות:
5+5*5 = 50, לא נחשב כ- 5+(5*5) = 50).10/4 = 2).result , אז אין להמשיך בדרך זו. כלומר, דרכים שמתחילות בה ורק מוסיפות עליה עוד פעולות לא נספרות. (למשל, הביטוי 5+5*5-5+5 = 50 לא ייספר, כי הביטוי 5+5*5 כבר הגיע לתוצאה 50, ורק נוספו כאן הפעולות -5+5 שסכומן הוא 0).לדוגמה, נניח שהדרך היחידה בה ניתן בחמש דרכים להגיע אל התוצאה 36 (result) רק עם המספר 3 (num)ועם ארבע פעולות חשבון (maxOp) היא:
3 + 3 + 3 + 3 + 3 + 3 = 363 * 3 * 3 * 3 = 363 / 3 * 3 * 3 * 3 = 363 * 3 / 3 * 3 * 3 = 363 / 3 * 3 * 3 * 3 = 36במקרה זה, התוצאה הנכונה היא, המספר הנמוך ביותר של הפעולות הוא
3 * 3 + 3 + 3 - 3 = 36
בהינתן num, result, ו- maxOp, יש להחזיר את המספר הנמוך ביותר של פעולות חשבון שניתן לבצע כדי להגיע לתוצאה result, תוך שימוש במספר num ובמספר הפעולות המקסימלי maxOp.
השיטה צריכה להיות רקורסיבית ללא שימוש בלולאות כלל. כך גם כל שיטות העזר (אם תכתבו) לא יכולות להכיל לולאות.
num = 3, result = 36, maxOp = 4
4
הסבר: הדרך היעילה ביותר להגיע ל-36 עם 3 היא 3 * 3 + 3 + 3 - 3 = 36 עם 4 פעולות.
num = 2, result = 16, maxOp = 4
4
הסבר: 2 * 2 * 2 * 2 = 16 עם 4 פעולות.
num = 5, result = 25, maxOp = 2
2
הסבר: 5 * 5 = 25 עם 2 פעולות.
num = 1, result = 10, maxOp = 9
9
הסבר: 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 = 10 עם 9 פעולות.
num = 10, result = 100, maxOp = 1
1
הסבר: 10 * 10 = 100 עם 1 פעולות.
num = 4, result = 64, maxOp = 3
3
הסבר: 4 * 4 * 4 = 64 עם 3 פעולות.
num = 7, result = 49, maxOp = 1
1
הסבר: 7 * 7 = 49 עם 1 פעולות.
num = 6, result = 36, maxOp = 1
1
הסבר: 6 * 6 = 36 עם 1 פעולות.
קלט:
num = 3, result = 36, maxOp = 4
הפלט המבוקש:
4