חידה?

חידה?

צריך למצוא מספר, למשל בואו נקח את המספר: 23 אם נהפוך את המקום של ה-2 כאילו נעביר לצד השני אז נקבל 32 צריך למצוא מספר שאם עושים את ההחלפה הזאת(עם הספרה שתיים) לאחר ההחלפה המספר השני צריך להיות פי שניים מהראשון כאילו 32=23x2 מקווה שהייתי ברור.. (ד"א גמני לא בדיוק יודע את הפתרון, נתנו לי את זה על יבש בלי עפרון דף או משהו כזה, אני גם אשב על זה:)!
 
לא נתת עוד פרטים..

רק מספר דו ספרתי? אם זה מספר תלת ספרתי אז הופכים אותו רגיל? רק עם הספרה שתיים? כי אז אתה פשוט צריך לבדוק את המספרים מ-20 עד 29...
 

Tesseract

New member
אממם..

33*2 = 66, ולא 33, כמו שהחידה מבקשת.לא נראה לי גם שהמספרים חייבים לכלול את הספרה 2.. לפי הבנתי את השאלה, אתה אמור למצוא פתרון למשוואה מהסוג:
2(10x+y)=10y+x​
תבדוק ותראה שפתרון כזה לא קיים עבור מספר דו-ספרתי, אלא עבור מספר בעל יותר ספרות (לו תהיה כמובן משוואה שונה, אך עם אותו עיקרון). כנראה שאם קיים (וסביר להניח שכן) מספר כזה, אז הוא גדול *מאוד*.. :)
 
חחח!! באמת עשיתי את המשוואה הזו

וזה יצא 8y=19x . אין לזה פיתרון, כמובן...
2(100x+10y+z)=100z+10y+x 200x+20y+2z=100z+10y+x 199x+10y-98z=0​
יש לך פיתרון למשוואה זו?
 

Tesseract

New member
גם לה אין..

גם לה אין פתרון, עד כמה שידוע לי.. ובכלל, הרצתי תכנית שבודקת את העניין עבור כל המספרים מ-1 עד 9999999, ולא נמצא שום מספר מתאים (או שהייתה בעיה בתכנית
, למרות שלא נראה לי, כי בדקתי אותה), כך שכמו שאמרתי, אם קיים מספר, הוא גדול מאוד.. כזה שאפשר להגיע אליו רק בדרכים מתמטיות מסובכות שאני עוד לא מכיר :)
 
סבבה...סתם שאלה:

באיזה שפה אתה מתכנת? חשבתי לבנות תוכנית, גם אני "מתכנת". זאת אומרת, אני טוב מאוד בפסקל כי למדתי אותו בבצפר, והתחלתי ללמוד java אבל מתישהוא באמצע התייאשתי. במה אתה מתכנת/אילו שפות אתה יודע? ובאיזה שפה כתבת את התוכנית? תוכל בבקשה להעלות את התוכנית?(אהה, ואני גם יודע C וממש ממש ממש קצת ++C)..
 

Tesseract

New member
אמם..

את התכנית לחידה הזאת, כתבתי בשפת פסקל, שזו לצערי, אגב, השפה היחידה שאני יודע כרגע :[ התכנית שכתבתי:
program try; uses crt; Type DigArrType=array[1..7] of Longint; TempsArrType=array[1..6] of Longint; Var I: Longint; N: DigArrType; T: TempsArrType; Begin {main} clrscr; For I:=1000000 to 9999999 do Begin N[1]:=I mod 10; T[1]:=I div 10; N[2]:=T[1] mod 10; T[2]:=T[1] div 10; N[3]:=T[2] mod 10; T[3]:=T[2] div 10; N[4]:=T[3] mod 10; T[4]:=T[3] div 10; N[5]:=T[4] mod 10; T[5]:=T[4] div 10; N[6]:=T[5] mod 10; T[6]:=T[5] div 10; N[7]:=T[6] mod 10; If (I*2=N[1]*1000000+N[2]*100000+N[3]*10000+N[4]*1000+N[5]*100+N[6]*10+N[7]) then writeln (I); End; readln; End.​
כתוב בצורה קצת טיפשית, אני יודע, אבל לא היה לי כח להשקיע יותר מדי, הרב שם זה copy+paste (ששימשו גם עבור שינוי התכנית למספרים קטנים ממיליון).
 

Tesseract

New member
כמו שרשמתי..

אם לדוגמא רוצים את המספרים מ-100000 עד 999999, פשוט מורידים את שתי השורות האחרונות בסדרת ה-T[x] ו-N[x] (במקרה הזה T[6] ו-N[7]), מורידים ממספר ה-For - אפס אחד ו-9 אחד, וממשפט ה-If מורידים 0 מכל אחד מהגורמים מצורת 10 בחזקת X, ואת הגורם הלוא נחוץ (לדוגמא N[7] כאן)..
 

Tesseract

New member
כן..

אגב, כדי לא להעמיס על השרשור - השאר במסרים, אם אתה רוצה..
 

yoyogam23

New member
אבל אני חושב שפספסת את החידה

כי הרעיון הוא מספר שבין ספרותיו נמצאת הספרה 2 וכשהופכים אותו מקבלים מספר הגדול מהמקורי פי שתיים, לא? אני לא הבנתי איך הנוסחה שלך פוגעת בחידה.
 

עריסטו

Active member
פתרון (אם הבנתי נכון)

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