ดูหนึ่งข้อความ
  #26  
Old 06 มิถุนายน 2004, 19:32
warut warut ไม่อยู่ในระบบ
กระบี่ไร้สภาพ
 
วันที่สมัครสมาชิก: 24 พฤศจิกายน 2001
ข้อความ: 1,627
warut is on a distinguished road
Smile

ผมก็ไม่ทราบเหมือนกันว่าวิธีไหนเหมาะสมกับข้อ 16 ที่สุด แต่วิธีที่ผมทำน่าจะมีเลขที่
ต้องคิดน้อยกว่าของคุณ gon นะครับ เพียงแต่ต้องทราบ Euler-Fermat Theorem
เท่านั้น (สำหรับคนที่ได้ผ่านเข้ารอบไปฝึกวิชากับเหล่าเทพเจ้า คงจะต้องได้เรียนแน่ครับ)

ทฤษฎีนี้กล่าวว่า ถ้า gcd(a, m) = 1 แล้ว af(m) 1 (mod m) โดยที่ f คือ Euler's phi function

เริ่มจากพิจารณาใน modulo 125 ก่อนนะครับ เพราะ 1000 = 2353 = 8*125
เนื่องจาก f(53) = 52f(5) = 25*4 = 100 ดังนั้น 2100 1 (mod 125)
เราจึงสนใจว่า 22004 ? (mod 100)
แต่เรารู้ว่า f(52) = 5f(5) = 20 ดังนั้น 220 1 (mod 25)
เพราะฉะนั้น 22004 24 = 16 (mod 25) นั่นคือ 25 | 22004 - 16
แต่เรารู้ว่า 4 | 22004 - 16 ด้วย ดังนั้น 100 | 22004- 16 นั่นคือ 22004 16 (mod 100)
และ 22004 - 3 13 (mod 100) (ทำไมถึงมี -3 เดี๋ยวก็จะเข้าใจครับ)
เพราะฉะนั้น 22^2004 - 3 213 = 8192 67 (mod 125) นั่นคือ 125 | 22^2004 - 3 - 67
ดังนั้น 1000 หาร 8*(22^2004 - 3 - 67) = 22^2004 - 8*67 = 22^2004 - 536 ได้ลงตัว
สรุปเศษของการหารก็คือ 536 ครับ ทำจริงๆน่าจะใช้เวลาน้อยกว่าที่ผมพิมพ์เยอะเลย

06 มิถุนายน 2004 19:48 : ข้อความนี้ถูกแก้ไขแล้ว 2 ครั้ง, ครั้งล่าสุดโดยคุณ warut
ตอบพร้อมอ้างอิงข้อความนี้