החידה הנ"ל לא דורשת שום ידע בשום שפת תכנות.
נניח ולרשותנו מחשב עם שלוש כתובות זכרון, X,Y וT
המטרה: להחליף את ערך X בערך Y.
פתרון:
[sourcecode language="cpp"]
t=y;
y=x;
x=t;
[/sourcecode]
כעת השאלה הנשאלת פה, מה האלגוריתם להחלפת X וY,
אם אסור להשתמש בT לצורך ההחלפה.
הפתרון גלוי רק למשתמשים הכנס למערכת או הרשם בחינם
קטגוריות
- אנליזה (7)
- אריתמטיקה (15)
- גאומטריות (15)
- הגיון (25)
- הסתברות (15)
- כללי (12)
- מדעי המחשב (16)
- מתמטיקה-טכנית (19)
- פיסיקה (7)
- קובינטוריקה (22)
- תורת המספרים (25)
- תורת המשחקים (10)
- תיכנות (17)
תגיות
אופטימיזציה
אי אפשרות
אינדוקציה
אינסוף
אלגברה
אלגוריתמיקה
אלכסונים
אמת-שקר
אסטרטגית נצחון
ארבע פעולות חשבון
בסיסים
בעיות חלוקה
בעיות שיבוץ
בעיות שקילה
גאומטריה
הגרלה
הסתברות
חידות לראיונות עבודה
חידות שח
חיפוש
מטבעות
מעגל
מתמטיקה תיכונית
ניסוי וטעיה
נמלים
נפח
סדרות
סטראומטריה
סכומים
ספירה
עוקבים
פיסיקה תיכונית
צבע
צבעים
ראשוניים
רצף
שובך היונים
שורשים
שטח
תבניות מספריות
תבנית מספרית
תוחלת
תורת הגרפים
תיקון שגיאות
תנועה
- You are here :
- Xidot
- /מדעי המחשב /
-
חסכון בזכרון למתחילים
-
קלפים ושאלות
אתם ניצבים מול נוכל שמציע לכם לשחק במשחק הבא:
מונחים n קלפים על השולחן עם הגב למעלה.
על כל קלף רשום מספר שונה בין 1 לn.(לא רואים את המספר)
עליכם לסדר את הקלפים לפי הסדר.
לא ניתן לדעת מה ערך קלף מסוים, אלא רק לשאול את הנוכל
"מי יותר גדול ?" בין 2 קלפים בדיוק.כל שאלה שאתם שואלים את הנוכל עולה לכם שקל אחד.
ואם תצליחו לסדר את כל הקלפים לפי הסדר, תקבלו 3n ש"ח.
האם קיימת דרך (שיטה) ודאית להרוויח כסף במשחק הנ"ל ?
הפתרון גלוי רק למשתמשים הכנס למערכת או הרשם בחינם -
מספר ריבועי
כתוב פונקציה IsSqr שמקבלת מספר שלם n
מחזירה אמת רק אם n הוא ריבוע של מספר שלם אחר
אסור להעזר בכפל,חילוק,העלאה בחזקה והוצאת שורש.
יש לכתוב את הפונקציה בסיבוכיות מינימלית.
יש 2 דרכים שונות לפתרון הבעיה
1. על ידי שימוש במודולו (שארית).
2. ללא שימוש במודולו.
הפתרון גלוי רק למשתמשים הכנס למערכת או הרשם בחינם 1. האלגוריתם מבוסס על העובדה שמספר הוא ריבועי
רק אם יש לו מספר אי זוגי של מחלקים
[sourcecode language="cpp"] int IsSqr(int n)
{
int i,j,d=0;
for (i=2,j=n-1;i<=j;i++,j--) if (n%i==0) d++; return ((d%2) || (n==1)) } [/sourcecode]
2. האלגוריתם מבוסס על זה שכל מספר ריבועי הוא סכום מהצורה
S=1+3+5+7+…+(2k+1)
[sourcecode language="cpp"] int IsSqr(int n)
{
int i,s=0;
for(i=1 ; s -
מטבע של 70 אחוז הצלחה
בנה מטבע עם הסתברות 70% על ידי מטבע מאוזן אחד בלבד
הפתרון גלוי רק למשתמשים הכנס למערכת או הרשם בחינם -
סדרה מבוססת
-
מה השורש
כמה פעמים צריך להוציא שורש למספר n, כך שהתוצאה תהיה המספר 2.
(או קרובה ל2 ככל האפשר)
הפתרון גלוי רק למשתמשים הכנס למערכת או הרשם בחינם