(XY , D)- Circular Number
(XY , D)- Circular Number เป็นเลขที่สองตัวหลัง ( หลักหน่วย,หลักสิบ ) เป็น X และ Y , และเมื่อนำเลขตัวนี้ไปคูณกับ D ก็จะทำให้ X และ Y เลื่อนไปอยู่ข้างหน้าแทน
ตัวอย่างเช่น : 132832080200501253 เป็น (5 3 , 4)- Circular Number เพราะ 132832080200501253 * 4 = 531328320802005012 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -- - - - - - - - - - - - - - - - -- - - - - ปัญหานี้เป็นโจทย์ comฯ ของ SA คับ ให้หาจำนวนที่น้อยที่สุดของ (XY , D)- Circular Number และถ้าไม่มี ก็ให้แสดงผลออกไปว่าไม่มี ถ้าจะให้ loop สลับเลขไปเรื่อยๆแล้ว check ก็ดูจะเป็นงานที่หนักเกินไป ( แล้วไม่รู้ด้วยว่าถึงจุดไหน จึงจะเรียกได้ว่า "ไม่มี" ) ปัญหาก็คือว่า เราจะทราบได้อย่างไรว่า ไม่มี Circular Number สำหรับ (XY , D)ใดๆ ( คิดไม่ออกครับ ช่วยด้วย !!) |
แล้วอย่างเลข 11 หละ ใช้ได้รึเปล่า
(1 1,1) 11 * 1 = 11 |
เอ่อ... งง โจทย์เล็กน้อยครับ
หมายความว่าให้ input (XY,D) มา แล้วให้หา circular number รึเปล่าครับ |
เราลองพิจารณาขั้นตอนการหาเลขดังกล่าวก่อนก็แล้วกัน เผื่อจะเกิดแนวคิดขึ้นบ้าง
เช่น สมมติว่าเราต้องการหา ( 53 , 4 ) จะทำได้อย่างไร เริ่มจาก สมมติให้จำนวนนั้นคือ x = ...cba53 จะได้ว่า 4x = 53...cba หรือ ba = 12 โดยมีตัวทดอีก 2 เราก็บันทึกไว้ว่า state ณ ตำแหน่งนี้คือ 212 ในทำนองเดียวกัน x = ...edc1253 จะได้ว่า 4x = 53...edc12 หรือ dc = 50 โดยมีตัวทดเป็น 0 เราก็บันทึกไว้ว่า state ณ ตำแหน่งนี้คือ 050 ในทำนองเดียวกัน x = ...gfe501253 จะได้ว่า 4x = 53...gfe5012 หรือ fe = 00 โดยมีตัวทดเป็น 2 เราก็บันทึกไว้ว่า state ณ ตำแหน่งนี้คือ 200 ในทำนองเดียวกัน x = ...ihg00501253 จะได้ว่า 4x = 53...ihg005012 หรือ hg = 02 โดยมีตัวทดเป็น 0 เราก็บันทึกไว้ว่า state ณ ตำแหน่งนี้คือ 002 ในทำนองเดียวกัน x = ...kji0200501253 จะได้ว่า 4x = 53...kji02005012 หรือ ji = 08 โดยมีตัวทดเป็น 0 เราก็บันทึกไว้ว่า state ณ ตำแหน่งนี้คือ 008 ในทำนองเดียวกัน x = ...mlk080200501253 จะได้ว่า 4x = 53...mlk0802005012 หรือ lk = 32 โดยมีตัวทดเป็น 0 เราก็บันทึกไว้ว่า state ณ ตำแหน่งนี้คือ 032 ในทำนองเดียวกัน x = ...onm32080200501253 จะได้ว่า 4x = 53...onm320802005012 หรือ nm = 28 โดยมีตัวทดเป็น 1 เราก็บันทึกไว้ว่า state ณ ตำแหน่งนี้คือ 128 ในทำนองเดียวกัน x = ...qpo2832080200501253 จะได้ว่า 4x = 53...qpo28320802005012 หรือ po = 13 โดยมีตัวทดเป็น 1 เราก็บันทึกไว้ว่า state ณ ตำแหน่งนี้คือ 113 ในทำนองเดียวกัน x = ...srq132832080200501253 จะได้ว่า 4x = 53...srq1328320802005012 หรือ rq = 53 โดยมีตัวทดเป็น 0 เราก็บันทึกไว้ว่า state ณ ตำแหน่งนี้คือ 053 เนื่องจากมันวนกลับมายัง 53 อีกครั้ง จึงได้ว่า x ที่เล็กที่สุดในกรณีนี้คือ 132832080200501253 เราจะสังเกตได้ว่า ตัวเลขสองหลักชุดต่อไปที่จะหาได้ ขึ้นอยู่กับค่า state ณ ปัจจุบันเท่านั้น หรืออีกนัยหนึ่งก็คือ ค่า state ในปัจจุบัน เป็นตัวกำหนดค่า state ถัดไปเท่านั้น (ลองหาความสัมพันธ์ดู) ยกตัวอย่างเช่น เราจะพบว่า ( 53 , 4 ) หาได้จากการไล่หาค่า state ต่อไปนี้ 212 ฎ 050 ฎ 200 ฎ 002 ฎ 008 ฎ 032 ฎ 128 ฎ 113 ฎ 053 นั่นคือ หากเราพบว่าในระหว่างขั้นตอนของการหา ( XY , D ) เกิด state ซ้ำกันขึ้น ก็สรุปได้ว่า ( XY , D ) นั้นไม่มี เพราะว่า มันจะเกิดการวนซ้ำของ state ไม่รู้จบ ปล. สำหรับกรณีทั่วไป เนื่องจาก 1 < D < 10 แสดงว่า x น้อยสุดของเรา มีจำนวนหลักได้ไม่เกิน 2*(9*99+8) = 1,798 หลัก หากตรวจสอบจนถึงหลักที่ 1,798 แล้วยังไม่เจอก็แสดงว่า ( XY , D ) นั่นไม่มีเช่นกัน |
:eek: ; ขอบคุณมากครับ
ตอบคุณ xbox โจทย์ให้เขียนโปรแกรมหา Circular ของ (XY,D ) ที่น้อยที่สุดอ่ะคับ อ้างอิง:
|
ถ้าน้อง ToT เข้าใจแล้ว ลองหาค่า ( XY , D) ที่น้อยและมากที่สุด (ตอบในรูป ( XY , D )) และจากผลลัพธ์การหาทั้งหมด เงื่อนไขใดที่ทำให้ ( XY , D ) ไม่มี
|
เอ่อ ... หมายถึงให้หา (XY,D) โดยที่ X,Y,D มีค่าน้อย/มากที่สุดหรือเปล่าครับ ... หรือหมายถึงให้หา circular ของ (XY,D) ที่น้อยที่สุด] ที่มีค่าน้อยที่สุดและมากที่สุด ครับ ??
อ่า .... ผมคิดวิธีหา (XY,D) ได้อีกวิธีนึงครับ คือเอา XY..............pqr ( ซึ่งก็คือ D * ..............pqrXY ) มาตั้งหารยาว วิธีนี้จะทำให้เราสามารถหา circular ของ (XY,D) จากหน้ามาหลังได้ครับ ( แต่ก็ไม่รู้จะมีประโยชน์กับการตัดเงื่อนไขของ (XY,D) ที่เป็นไปได้หรือเปล่า ยังคิดอะไรไม่ออกเลย ) |
เวลาที่แสดงทั้งหมด เป็นเวลาที่ประเทศไทย (GMT +7) ขณะนี้เป็นเวลา 00:35 |
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Modified by Jetsada Karnpracha