ברוכים הבאים לאתר תחרויות קודגורו! › פורומים › ראשי › כמה שאלות מהמבחן….
- This topic has 10 תגובות, 5 משתתפים, and was last updated לפני 21 שנים, 7 חודשים by Yoni.
-
מאתתגובות
-
23 באפריל 2003 בשעה 20:55 #77444TheWizardמשתתף
– בשאלה 9 מוקצה מספיק זכרון או לא?
– איך פתרתם את שאלה 20? (עקרון מתמטי, תוכנה, וכו´)
– שאלה 22… מה הפתרון ולמה?
– מישהו הבין מה זה ב-39?
– מה זה ב-90?
– מה זה ב-98?
23 באפריל 2003 בשעה 21:55 #79416MoDמשתתףכותרת: המממ… תשובותי —>
9. כתבתי שהמשתנה str לא מוגדר נכון.. לא טרחתי לבדוק
20. ע"פ דרך השלילה (שוב יכול להיות שטעיתי) 1% ו 91% נראים לי מוגזמים, 49% – הטיעון שלי הוא שלא נראה לי שבערך חצי מהמספרים התלת סיפרתיים הם ראשוניים.. אז נשארתי עם 17% בתקווה לטוב
22. אני לא זוכר אם שמתי 10 או 5, פה לא היה לי רעיון – אני אשמח לשמוע פתרונות שלכם !
39. הימרתי על שני ביטים דלוקים ברצף, אבל זו השערה חסרת הוכחה או בדיקה …
90. היתה שאלה דומה (ללא שניות) בשלב א´ – שאלה מס´ 19, הפתרון שלי היה (לשלב ב) 27.8, אבל לצערי אני לא זוכר למה… (או שזה היה 18.4…
98… כדי לעבוד עם תוכנית שנכתבה ב .NET דרוש ה Framework, לא זכור לי אם דרוש Wizard או תוכנית התקנה מיוחדת אבל דרוש הפריים וורק והתשובה הראשונה היא היחידה שהכילה את המשפט הזה – אז בחרתי בה23 באפריל 2003 בשעה 22:11 #79417אורן בקרמשתתףכותרת: שאלה 22
לדעתי התשובה היא שיש רק אפשרות אחת לספרת העשרות והיא 7.17^7 mod 100 = 73
17^10 mod 100 = 49M = 17^(10n+7) mod 100 = (17^10)^n * (17^7) mod 100 =
49^n * 73 mod 10049^2 mod 100 = 1
עבור n = 2k
M = 49^(2k) * 73 mod 100 = (49^2)^k * 73 mod 100 = 1 * 73 = 73עבור n=2k+1
M = 49^(2k+1) * 73 mod 100 = 49 * 73 mod 100 = 77בשני המקרים ספרת העשרות היא 7
23 באפריל 2003 בשעה 23:39 #79419Yoniמשתתףכותרת: אורן טועה + הקוד שלי לשאלה 20
1. אורן טועה:
17 בחזקת 7 = 410338673יש 2 אפשרויות – או שהמספר נגמר ב-3 או שהוא נגמר ב-7, וכך גם בחרתי. כשהייתי שם בדקתי עבור n=7, n=17, n=27, n=37, n=47, כשחזרתי הביתה הוכחתי באופן כללי (אם יהיה ביקוש אכתוב את ההוכחה).
2. הקוד שלי לשאלה 20: (יתכן שיש להעתיקו ל-notepad או משהו דומה כדי שיהיה קריא)
int isprime(int x)
{
for(int i = 2; i < x; i++)
if(!(x % i))
return 0;return 1;
}int main()
{
int total = 0, primes = 0;
for(int x = 100; x < 1000; x++) {
total++;
if(isprime(x))
primes++;
}printf("%d,%dn", primes, total);
return 0;
}הפלט הוא: 143,900
כלומר: 143 ראשוניים מתוך 900 מספרים, או כ-15.8 אחוז.
הערה: הפונקציה isprime כאן לא יעילה משהו. לא נורא… זה רק עד 1000, התוכנית רצה בפחות משניה גם ככה.23 באפריל 2003 בשעה 23:48 #79420Yoniמשתתףכותרת: רשע…
גיליתי עכשיו שטעיתי בשאלה 9…
לא מוקצה מספיק זכרון. strlen("")==0.24 באפריל 2003 בשעה 00:15 #79422Yoniמשתתףכותרת: אופס… לא קראתי נכון את השאלה
חשבתי שמדובר בספרת האחדות של 17 בחזקת n.24 באפריל 2003 בשעה 08:15 #79423Tom Alsbergמשתתףכותרת: חלק מהשאלות
אני לא מצליח לפתוח את הדף עם השאלות (ש-Shai מסר קישור אליו – http://go.ariel.muni.il/noar/1.htm), אולי כשאצליח יהיה לי עוד מה להגיב.לגבי השאלה על יוצאת הדופן בין ההוראות ב-Assembly, עניתי שזוהי JMP, מכיוון שזו לא משנה את המחסנית או את אוגר המחסנית (ESP/SP). לא חשבתי על האפשרות של RET כי היא לא יכולה לקבל אוגר כ-Operand, אבל גם עכשיו אני מאמין יותר בתשובה שלי – JMP. זה נכון שחלק מהשאלות לא היו ברורות לגמרי, או שיכלה ליהיות יותר מתשובה אחת נכונה.
לגבי השאלה על יוצא הדופן בין Pipe/Socket/CopyData/MailSlot, עניתי שזהו CopyData, פשוט כי לא היה לי יותר מדי זמן לבדוק, ו-Pipe, Socket, ו-MailSlot הן צורות של IPC (Inter-Process Communication – תקשורת בין תהליכים) שהכרתי, ואת CopyData לא הכרתי.
עתה לגבי השאלה על אחוז המספרים הראשוניים בני 3 הספרות, אני השתמשתי בשורה ב-Bourne Shell של UNIX. (אמנם תלוי מעט בכלי של BSD, אך יעבוד על רוב המערכות – אצלי זה היה Linux). למי שהיה לו מזל של נגישות למערכת כזו בזמן הבחינה, זה פשוט יותר מתוכנית של עשרות שורות ב-C:
i=100; while [ i -lt 1000 ]; do echo $i | factor; i=`expr $i + 1`; done | grep ´^([0-9]*): 1$´ | wc -l
מזה קיבלתי תוך כמה שניות את כמות המספרים הראשוניים בין 100 ל-999 – 143. זה היה הכי קרוב ל-17% מבין התשובות האפשריות.
24 באפריל 2003 בשעה 10:20 #79425MoDמשתתףכותרת: אני רואה שלגבי שאלת הראשוניים…
השיטה שלי היתה הכי מהירה
Nice to know
ד"א יופי של שורה ביוניקס – מוכשר מצידך24 באפריל 2003 בשעה 10:40 #79426TheWizardמשתתףכותרת: אההמ… לגבי שאלה הראשוניים…
אפשר גם לפי עקרון מתמטיכמות המספרים הראשוניים הקטנים מ-n תמיד קטנה מ- n / logn
log(100)=2
log(1000)
1000 / 3 = 333
100 / 2 = 50
333 – 50 = 283
כלומר פחות מ-28.3%
וזה כל מה שצריך בשביל התשובה…24 באפריל 2003 בשעה 12:29 #79429Tom Alsbergמשתתףכותרת: כמות המספרים הראשוניים
דף מעניין (זה ש-TheWizard קישר אליו). לא ידעתי את רוב הדברים שם. ההוכחות לגבולות האלה נראות מורכבות…
נחמד איך אלה מהמאה ה-19 חישבו ראשוניים גבוהים כאלה…24 באפריל 2003 בשעה 12:40 #79431Yoniמשתתףכותרת: לא מדויק
אמרת שכמות המספרים הראשוניים הקטנים מ-n תמיד קטנה מ-n/logn.הוכיחו שהכמות הזאת גדולה מ-n/logn אינסוף פעמים, אבל גם הוכיחו שה-n הראשון כך שהכמות גדולה מ-n/logn הוא (הכנס מספר ממש ממש ממש גדול כאן).
עבור ראשונים תלת-ספרתיים זה נכון כמובן.
ודרך נחמדה, לא חשבתי עליה. -
מאתתגובות
- יש להתחבר למערכת על מנת להגיב.