เขียนโปรแกรมที่รับจำนวนเต็มสองตัวเป็นอินพุต ที่แรกสามารถเป็นจำนวนเต็มใด ๆ และที่สองน้อยกว่าหรือเท่ากับจำนวนหลักในจำนวนแรก ให้ตัวเลขเหล่านี้จะเป็นa
และb
ตามลำดับ
โปรแกรมจะทำสิ่งต่อไปนี้
- Concatenate จำนวนน้อยที่สุดของ
1
s ที่ส่วนท้ายของa
ดังนั้นจำนวนของตัวเลขในหารด้วยa
b
- แยก
a
ตามb
ตัวเลขทุกตัว - คูณตัวเลขในแต่ละส่วนเข้าด้วยกัน
- ต่อผลิตภัณฑ์เข้าด้วยกัน (หากตัวเลขใดตัวเลขหนึ่งเป็นศูนย์ให้ต่อเข้าด้วยกัน
0
) - ทำซ้ำขั้นตอนนี้จนกว่าจะมีหมายเลขที่มีตัวเลขน้อยกว่า
b
เลขเคร่งครัด พิมพ์สิ่งนี้เป็นผลลัพธ์รวมทั้งจำนวนกระบวนการซ้ำ หน่วยไม่จำเป็น แต่รูปแบบการแยกบางอย่างระหว่างหมายเลขสุดท้ายและจำนวนการวนซ้ำคือ
ในกรณีทดสอบต่อไปนี้แสดงแต่ละขั้นตอนเพื่อวัตถุประสงค์ในการทำความเข้าใจ โปรแกรมของคุณไม่จำเป็นต้องแสดงขั้นตอน
กรณีทดสอบ 1
1883915502469, 3
ขั้นตอน
1883915502469 //Iteration 1
188391550246911
188 391 550 246 911
64 27 0 48 9
64270489 //Iteration 2
642704891
642 704 891
48 0 72
48072 //Iteration 3
480721
480 721
0 14
014 //Iteration 4
0
ตัวอย่างผลลัพธ์ :0, 4
กรณีทดสอบ 2
792624998126442, 4
ขั้นตอน
792624998126442 //Iteration 1
7926249981264421
7926 2499 8126 4421
756 648 96 32
7566489632 //Iteration 2
756648963211
7566 4896 3211
1260 1728 6
126017286 //Iteration 3
126017286111
1260 1728 6111
0 112 6
01126 //Iteration 4
01126111
0112 6111
0 6
06
ตัวอย่างผลลัพธ์ :06, 4
โปรแกรมจะต้องกลับข้อผิดพลาด (หรือเพียงแค่ไม่ได้พิมพ์อะไร) b>len(a)
ถ้า นอกจากนี้b
ไม่สามารถเท่ากับ 1 มิฉะนั้นโปรแกรมจะส่งผลให้เกิดการวนซ้ำไม่สิ้นสุด
นี่คือรหัสกอล์ฟดังนั้นจึงใช้กฎมาตรฐาน รหัสที่สั้นที่สุดในหน่วยไบต์ชนะ
a
และรวมอยู่ในเอาท์พุท?