ייצוג מספר כסכום חזקות

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

לדוגמה, את המספר 9 = num אפשר להציג כך:

2⁰ + 2³ = 1 + 8 = 9                       factor = 2

3² = 9                                    factor = 3

את המספר 19 = num אפשר להציג כך:

2⁰ + 2¹ + 2⁴ = 1 + 2 + 16 = 19            factor = 2

את המספר 28 = num אפשר להציג כך:

2² + 2³ + 2⁴ = 4 + 8 + 16 = 28            factor = 2

3⁰ + 3³ = 1 + 27 = 28                     factor = 3

את המספר 42 = num אפשר להציג כך:

2¹ + 2³ + 2⁵ = 2 + 8 + 32 = 42            factor = 2

6¹ + 6² = 6 + 36 = 42                     factor = 6

את המספר 73 = num אפשר להציג כך:

2⁰ + 2³ + 2⁶ = 1 + 8 + 64 = 73             factor = 2

8⁰ + 8¹ + 8² = 1 + 8 + 64 = 73             factor = 8

את המספר 273 = num אפשר להציג כך:

2⁰ + 2⁴ + 2⁸ = 1 + 16 + 256 = 273          factor = 2

4⁰ + 4² + 4⁴ = 1 + 16 + 256 = 273          factor = 4

16⁰ + 16¹ + 16² = 1 + 16 + 256 = 273       factor = 16

בהינתן מספר שלם חיובי num יש להחזיר את המספר factor הגדול ביותר מבין המספרים 2 ו-num-2 כך שאפשר לקבל את num כסכום חזקות של factor, כאשר כל חזקה מופיעה לכל היותר פעם אחת. אם אין מספר כזה יוחזר 0, כמו כן, יש להדפיס את פירוט החזקות של factor שסכומן num.

השיטה צריכה להיות רקורסיבית ללא שימוש בלולאות כלל. כך גם כל שיטות העזר (אם תכתבו) לא יכולות להכיל לולאות.

אילוצים:
  • כדאי לכתוב שיטת עזר (רקורסיבית כמובן) שמקבלת את num ומספר נוסף factor, ובודקת אם אפשר להציג את num כסכום חזקות של factor.
  • יש להחזיר את הגורם המקסימלי וגם להדפיס את הצגת הצירופים.
דוגמה 1:
קלט:
num = 9
פלט:
9
3

הסבר: המספר שיוחזר יהיה 3 (כי הוא הגדול מבין 2, 3) ויודפס: 9

דוגמה 2:
קלט:
num = 73
פלט:
1	8	64
8

הסבר: המספר שיוחזר יהיה 8 (כי הוא הגדול מבין 2, 8) ויודפס: 1 8 64

דוגמה 3:
קלט:
num = 273
פלט:
1	16	256
16

הסבר: המספר שיוחזר יהיה 16 (כי הוא הגדול מבין 2, 4, 16) ויודפס: 1 16 256

דוגמה 4:
קלט:
num = 3
פלט:
0

הסבר: המספר שיוחזר יהיה 0 (כי אין factor אפשרי)

דוגמה 5:
קלט:
num = 19
פלט:
1	2	16
2

הסבר: המספר שיוחזר יהיה 2 (אין אפשרות עם 17) ויודפס: 1 2 16

דוגמה 6:
קלט:
num = 42
פלט:
6	36
6

הסבר: המספר שיוחזר יהיה 6 (כי הוא הגדול מבין 2, 6) ויודפס: 6 36

דוגמה 7:
קלט:
num = 28
פלט:
1	27
3

הסבר: המספר שיוחזר יהיה 3 (כי הוא הגדול מבין 2, 3) ויודפס: 1 27

דוגמה 8:
קלט:
num = 7
פלט:
1	2	4
2

הסבר: המספר שיוחזר יהיה 2 (אין אפשרות עם 5) ויודפס: 1 2 4

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

קלט:

num = 9

הפלט המבוקש:

9
3