Mathcenter Forum

Mathcenter Forum (https://www.mathcenter.net/forum/index.php)
-   ปัญหาคณิตศาสตร์ทั่วไป (https://www.mathcenter.net/forum/forumdisplay.php?f=1)
-   -   (XY , D)- Circular Number (https://www.mathcenter.net/forum/showthread.php?t=436)

ToT 25 กรกฎาคม 2002 11:52

(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)ใดๆ ( คิดไม่ออกครับ ช่วยด้วย !!)

xbox 25 กรกฎาคม 2002 16:12

แล้วอย่างเลข 11 หละ ใช้ได้รึเปล่า
(1 1,1)
11 * 1 = 11

xbox 25 กรกฎาคม 2002 16:15

เอ่อ... งง โจทย์เล็กน้อยครับ
หมายความว่าให้ input (XY,D) มา แล้วให้หา circular number รึเปล่าครับ

TOP 25 กรกฎาคม 2002 16:39

เราลองพิจารณาขั้นตอนการหาเลขดังกล่าวก่อนก็แล้วกัน เผื่อจะเกิดแนวคิดขึ้นบ้าง
เช่น สมมติว่าเราต้องการหา ( 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 ) นั่นไม่มีเช่นกัน

ToT 25 กรกฎาคม 2002 17:46

:eek: ; ขอบคุณมากครับ
ตอบคุณ xbox
โจทย์ให้เขียนโปรแกรมหา Circular ของ (XY,D ) ที่น้อยที่สุดอ่ะคับ
อ้างอิง:

Problem 3 : (XY , D)- Circular Numbers

An (XY,D)-Circular Number is a number whose last two digits are X and Y, where the multiplication of the number by the single digit D is equivalent to moving the last two digits (XY) to the beginnig of the number.

For example, the number :

132832080200501253 is a (5 3, 4)- Circular number because
132832080200501253 * 4 = 531328320802005012

Write a program that asks for a two-digit number XY and a single digit D, and prints the SMALLEST (XY,D) - Circular number or prints a message "NONE" if none exists.

Test your program with (1 2, 4) and (9 9, 9).


TOP 26 กรกฎาคม 2002 12:42

ถ้าน้อง ToT เข้าใจแล้ว ลองหาค่า ( XY , D) ที่น้อยและมากที่สุด (ตอบในรูป ( XY , D )) และจากผลลัพธ์การหาทั้งหมด เงื่อนไขใดที่ทำให้ ( XY , D ) ไม่มี

ToT 27 กรกฎาคม 2002 13:30

เอ่อ ... หมายถึงให้หา (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