ישנם 3 קופסאות שעל קופסה אחת כתוב "2 כדורים לבנים", על קופסה שנייה כתב "כדור לבן כדור שחור" על השלישית כתוב "2 כדורים שחורים". ידוע שמה שכתוב על כל אחד מהקופסאות זה שקר, אלא מה שנכון עבור כל קופסה כתוב על אחת מ-2 הקופסאות האחרות. כמה שליפות של כדורים אני צריך כדי לדעת מה מכילה כל קופסה באמת.
תשובות
הוסף תשובה
|
לצפיה בתשובות
ספטמבר 2025
שליפה אחת בלבד.
נשלוף כדור מ-"כדור לבן כדור שחור". אם הכדור לבן/שחור - אנחנו יודעים שהקופסה הזאת היא הקופסה הלבנה/שחורה. נלך לקופסה שעליה כתוב הצבע ההפוך (אם שליפה ראשונה לבנה, נלך לקופסה השחורה): אנחנו יודעים שהיא לא מכילה את הצבע ההפוך כי התגית משקרת, ואנחנו יודעים שהיא לא הקופסה עם הצבע הנכון, כי מצאנו אותה. לכן היא הקופסה עם השחור והלבן. השלישית תהיה הקופסה שנותרה.
יש דרך בo(n) ויש דרך יותר יעילה אותה הם מחפשים בlog(n)
ספטמבר 2025
באותה דרך בה ממירים מספר מייצוג דצימלי לייצוג בינארי - עושים מודלו 2 וחילוק ב-2, וזה נותן ספרה אחת. חוזרים על התהליך עד שהמספר מתאפס.
דרך נוספת: אפשר לעשות פעולות על ביטים - למשל num & 1 (ולא [!] num && 1) וככה להשוות את הביט האחרון.
נתון מערך עם N-1 איברים שכל איבר הוא מהתחום 1-N, כלומר ספרה אחרת מהטווח חסרה. כתוב קוד שמוצא מהי הספרה החסרה
תשובות
הוסף תשובה
|
לצפיה בתשובות
ספטמבר 2025
תחשב סכום הסידרה של אן פחות 1 איברים, תעבור על המערך ותסכום את כל האיברים ותחסר בין סכום הסידרה לבין סכום איברי המערך וזו הסיפרה החסרה
ספטמבר 2025
דרך נוספת היא ליצור מערך בן N-1 איברים, לעבור על המערך המקורי ולסמן במערך החדש כל איבר שמופיע בו ( new[old[i]] = true ) ואז לעבור על המערך החדש ולהחזיר את האיבר שמקיים new[i] = false.
סיבוכיות מקום גרועה, סיבוכיות זמן O(n). (פתרון קודם עדיף)