איך מחלקים בעזרת כפל (שאלה 17)

עמוד

ברוכים הבאים לאתר תחרויות קודגורו! פורומים חידות איך מחלקים בעזרת כפל (שאלה 17)

מוצגות 5 תגובות – 1 עד 5 (מתוך 5 סה״כ)
  • מאת
    תגובות
  • #77752
    CodeGuru
    מנהל בפורום

    אף אחד לא פתר את שאלה 17 (אם כי היו כמה קרובים).

    העלנו גם את השאלון כולו, להנאתכם.

    #80222
    ihsahn
    משתתף

    כותרת: האם התשובה היא..
    SHIFT=17, MUL=7711?

    #80223
    אור
    משתתף

    כותרת: מספר פתרונות?
    לפי מה שזה ניראה יש מספר פיתרונות לשאלה…
    הרי צריך למצוא מספרים Mul ו shift שיתאימו למשוואה הבא בצורה הכי קרובה:
    Mul=(2^Shift)/17 +1
    בנוסף לתנאי שmul צריך לא להיות גדול מ 65537(מאחר והמספר הגדול ביותר שa יכול להיות הוא 65535)
    דבר נוסף הוא שעל מנת שהמשוואה הזאת תיהיה כמה שיותר קרובה לייצוג קרוב במספר שלם צריך לבחור את המספר הכי גדול למרות שאם ההגבלה על גודלו של a לא חייבים לבחור את המספר הכי גדול.
    לכן גם המספרים:
    18 ו 11421
    19 ו 30841
    20 ו 61681

    כמובן שעבור shift נמוך מדי התוצאה לא תיהיה נכונה בגלל אי הדיוק של השלם…

    דרך אגב… בתהליך נתקלתי בתופעה מעניינת: כל חזקה של 2 ,שהמעריך שלה הוא בעצמו חזקה של 2, פחות אחת מתחלק ב17 ללא שארית…

    #80224
    אור
    משתתף

    כותרת: כן… טעיתי בהצבה ב 18…
    אבל אני חושב שהנוסחה בסדר…
    ובדקתי את הנכונות של 18 ו 19…
    ל 18 עפי הנוסחה mul הוא 15421.
    והינה החישוב:
    15421*65535=1010615235
    השיפט הוא שווה ערך ל חלוקה ב 2^18 כלומר:
    1010615235/262144=3855.191173553466796875
    מאחר וכאשר מבצעים שיפט לימין המספר המתקבל הוא כבר מעוגל כלפי מטה אז זה באמת שווה ל 3855.
    וחישוב רגיל :
    65535/17=3855

    (מומלץ להעביר את החישובים לצד שמאל. על מנת צפייה נכונה..)

    #80225
    איליי
    משתתף

    כותרת: אור, אתה בטוח שזה עובד עם 19 ו – 18?
    עם shift של 18 אני חושב שהצבת לא נכון בנוסחא שנתת, ועם shift של 19 אני חושב שזה עדיין לא מדויק עבור ערך גדול מספיק (אבל בתחום החוקי).

    בדקת את זה?

    (בכל מקרה, עם shift של 20 זה נראה סבבה ונכון)

מוצגות 5 תגובות – 1 עד 5 (מתוך 5 סה״כ)
  • יש להתחבר למערכת על מנת להגיב.