Mathcenter Forum

Mathcenter Forum (https://www.mathcenter.net/forum/index.php)
-   ปัญหาคณิตศาสตร์ทั่วไป (https://www.mathcenter.net/forum/forumdisplay.php?f=1)
-   -   ช่วยหาวิธีคำนวณหาค่า X หน่อยครับ มืดแปดด้าน (https://www.mathcenter.net/forum/showthread.php?t=24386)

ออฟ 27 มิถุนายน 2019 20:52

ช่วยหาวิธีคำนวณหาค่า X หน่อยครับ มืดแปดด้าน
 
(x Mod (256 * 256)) + ((x / (256 * 256) Mod 256) * 100000) = 15121591
ด้านบนเป็นสมการ ที่ทาง บริษัทที่จีนให้มาเพื่อ เข้ารหัส ที่นี้ถ้าเราป้อนในโปรแกรมเข้าไปด้วยค่า 9917527 แทนค่า X ค่าในสูตร
จะได้คำตอบ 15121591 แทนค่า
( 9917527 Mod (256 * 256)) + (ปัดเศษลง( 9917527 / (256 * 256) Mod 256) * 100000) = 15121591

ที่นี้ในมางกลับกันถ้าผมมีแค่ค่าคำตอบ 15121591 สามารถคิดย้อนกลับหาค่า X ได้ไหมครับ หรือใกล้เคียงที่สุด ค่า x จะต้องได้ 9917527
ขอบคุณครับ

NaPrai 01 กรกฎาคม 2019 00:37

ยังไม่เข้าใจโจทย์อะครับ ช่วยอธิบายเพิ่มหน่อยได้ไหมครับ

ออฟ 01 กรกฎาคม 2019 09:13

(x Mod (256 * 256)) + ((x / (256 * 256) Mod 256) * 100000) = 15121591
ด้านบนเป็นสมการ ที่ทาง บริษัทที่จีนให้มาเพื่อ เข้ารหัส ที่นี้ถ้าเราป้อนในโปรแกรมเข้าไปด้วยค่า 9917527 แทนค่า X ค่าในสูตร
จะได้คำตอบ 15121591 แทนค่า
( 9917527 Mod (256 * 256)) + (ปัดเศษลง( 9917527 / (256 * 256) Mod 256) * 100000) = 15121591

ที่นี้ในมางกลับกันถ้าผมมีแค่ค่าคำตอบ 15121591 สามารถคิดย้อนกลับหาค่า X ได้ไหมครับ หรือใกล้เคียงที่สุด ค่า x จะต้องได้ 9917527
ขอบคุณครับ

Amankris 01 กรกฎาคม 2019 18:31

อ้างอิง:

ให้ $f(n)$ คือเศษจากการหาร $n$ ด้วย $256^2$
และ $g(n)$ คือเศษจากการหาร $\left\lfloor\dfrac{n}{256^2}\right\rfloor$ ด้วย $256$
จงหาจำนวนเต็ม $x$ ที่ $f(x)+100000g(x)=15121591$
ใช่แบบนี้ไหมครับ
ไม่แน่ใจว่าต้องหาทั้งหมดด้วยรึเปล่า

ออฟ 03 กรกฎาคม 2019 16:44

อ้างอิง:

ข้อความเดิมเขียนโดยคุณ Amankris (ข้อความที่ 186897)
ใช่แบบนี้ไหมครับ
ไม่แน่ใจว่าต้องหาทั้งหมดด้วยรึเปล่า

แทนค่าได้ครับ ว่าแต่ขอตัวอย่าง แก้สมการให้ดูหน่อยครับ ถ้าคำตอบ= 5355507 x จะได้ค่าเท่าไรครับ

ohmohm 15 กรกฎาคม 2019 20:41

ดูๆ ไป นึกถึงเลขฐานสองหรือฐานสิบหกในคอมพิวเตอร์ โดย $256 = 2^8$ ก็คือ 8 bit หรือเลขฐานสิบหก 2 หลัก (bit = binary digit จำนวนหลักของเลขฐานสอง) ถ้า $256*256 = 2^8*2^8 = 2^{16}$ ก็คือ 16 บิต หรือเลขฐานสิบหก 4 หลัก

ผมมองว่า (x Mod (256 * 256)) คือการเอาเฉพาะ 16 บิตด้านขวาสุดของ x (ถ้าเป็นเลขฐานสิบหก ก็ 4 หลัก)

ส่วน x / (256 * 256) คือการเอา x มาเลื่อน (shift) บิตไปทางขวา 16 บิต
จากนั้น Mod 256 อีกครั้ง คือการเอาเฉพาะ 8 บิตขวาสุด (ถ้าเป็นเลขฐานสิบหก ก็ 2 หลัก แสดงว่า x เป็นเลขฐานสิบหก จำนวน 6 หลัก)
จากนั้นเอามาคูณ 100000 (เลขฐานสิบ)

15121591 = 21591 + 15100000

21591 เมื่อแปลงเป็นเลขฐานสิบหก ได้ 0x5457
ส่วน 15100000 หาร 100000 ได้ 151 แปลงเป็นเลขฐานสิบหก ได้ 0x97
เอามาต่อกันได้ = 0x975457 = 9917527

ขออภัยถ้าใช้ภาษาคอมพิวเตอร์เยอะไปหน่อย

เพิ่มๆ ถ้าคำตอบ= 5355507

53=0x35
55507=0xD8D3

คำตอบคือ 0x35D8D3 = 3528915

ออฟ 24 กรกฎาคม 2019 08:20

อ้างอิง:

ข้อความเดิมเขียนโดยคุณ ohmohm (ข้อความที่ 186905)
ดูๆ ไป นึกถึงเลขฐานสองหรือฐานสิบหกในคอมพิวเตอร์ โดย $256 = 2^8$ ก็คือ 8 bit หรือเลขฐานสิบหก 2 หลัก (bit = binary digit จำนวนหลักของเลขฐานสอง) ถ้า $256*256 = 2^8*2^8 = 2^{16}$ ก็คือ 16 บิต หรือเลขฐานสิบหก 4 หลัก

ผมมองว่า (x Mod (256 * 256)) คือการเอาเฉพาะ 16 บิตด้านขวาสุดของ x (ถ้าเป็นเลขฐานสิบหก ก็ 4 หลัก)

ส่วน x / (256 * 256) คือการเอา x มาเลื่อน (shift) บิตไปทางขวา 16 บิต
จากนั้น Mod 256 อีกครั้ง คือการเอาเฉพาะ 8 บิตขวาสุด (ถ้าเป็นเลขฐานสิบหก ก็ 2 หลัก แสดงว่า x เป็นเลขฐานสิบหก จำนวน 6 หลัก)
จากนั้นเอามาคูณ 100000 (เลขฐานสิบ)

15121591 = 21591 + 15100000

21591 เมื่อแปลงเป็นเลขฐานสิบหก ได้ 0x5457
ส่วน 15100000 หาร 100000 ได้ 151 แปลงเป็นเลขฐานสิบหก ได้ 0x97
เอามาต่อกันได้ = 0x975457 = 9917527

ขออภัยถ้าใช้ภาษาคอมพิวเตอร์เยอะไปหน่อย

เพิ่มๆ ถ้าคำตอบ= 5355507

53=0x35
55507=0xD8D3

คำตอบคือ 0x35D8D3 = 3528915

ใช่เลยครับวิธีนี้ สวรรค์เลยครับ ขอบคุณมากๆครับ ตอนนี้ผมใช้วิธีหาค่าด้วยวิธี ป้อนค่าแบบจนกว่าจะตรงกับคำตอบ โดยใช้การวนลูปจนเจอคำตอบ หารออกที่ละครึ่ง ขอบคุณมากจริงๆครับ มีอีกหลายที่ ที่รอคำตอบนี้ครับ


เวลาที่แสดงทั้งหมด เป็นเวลาที่ประเทศไทย (GMT +7) ขณะนี้เป็นเวลา 11:42

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Modified by Jetsada Karnpracha