מספר מינימלי עם סכום נתון

נתון מערך מלא באפסים, ומספר שלם s. יש למלא את המערך כולו בספרות מ-1 עד 9 (שימוש בספרה 0 אסור) כך שסכומן הוא בדיוק s, וכך שאם נקרא את תוכן המערך כמספר, ערכו יהיה הנמוך ביותר מבין האפשרויות.

לדוגמה, עבור מערך arr בגודל 4 מלא באפסים, והפרמטר s = 14, צריך למלא את המערך כך שיהיה:

0123
1139

כלומר, arr[0] = 1, arr[1] = 1, arr[2] = 3, arr[3] = 9

זאת כיוון שהמספר 1139 (שהוא המערך של המספר טבעי) הוא המספר הקטן ביותר של 4 ספרות שונות מ-0 שסכומן 14.

אם אין מספר העונה לדרישות (למשל, אם גודל המערך הוא 2 וs = 20) יש להשאיר את המערך כפי שהוא (באפסים בלבד).

השיטה צריכה להיות יעילה ככל הניתן, גם מבחינת סיבוכיות הזמן וגם מבחינת סיבוכיות המקום.

דוגמה 1:
קלט:
arr = [0, 0, 0, 0],
s = 14
פלט:
[1, 1, 3, 9]

הסבר: המספר 1139 הוא המספר הקטן ביותר בן 4 ספרות שסכום ספרותיו 14

דוגמה 2:
קלט:
arr = [0, 0],
s = 17
פלט:
[8, 9]

הסבר: המספר 89 הוא המספר הקטן ביותר בן 2 ספרות שסכום ספרותיו 17

Loading...
נשמרLn 1, Col 1

קלט:

arr = [0, 0, 0, 0],
s = 14

הפלט המבוקש:

[1, 1, 3, 9]