นักคณิตศาสตร์บ้าเป็นเจ้าของตัวเลขจำนวนมากและพื้นที่ที่เขาทิ้งมี จำกัด เพื่อช่วยให้บางเขาต้องพับจำนวนเต็ม แต่น่าเสียดายที่เขาขี้เกียจจริงๆ งานของคุณหากคุณต้องการช่วยเขาคือการสร้างฟังก์ชั่น / โปรแกรมที่พับจำนวนเต็มบวกที่กำหนดสำหรับความบ้าคลั่งจำนวนของเรา
วิธีการพับจำนวนเต็ม?
หากมันหารอย่างสม่ำเสมอด้วยผลรวมของตัวเลขให้หารด้วยผลรวมของตัวเลข หากไม่เป็นไปตามข้อกำหนดดังกล่าวให้นำส่วนที่เหลือมาหารด้วยผลรวมของตัวเลข 1
ทำซ้ำขั้นตอนจนกว่าจะถึงผลที่ตามมา จำนวนเต็มที่ถูกพับคือจำนวนของการดำเนินการที่คุณต้องดำเนินการ ลองยกตัวอย่าง (พูด1782
):
1 + 7 + 8 + 2 = 18
ได้รับผลรวมของตัวเลขของ:1782
หารเท่า ๆ กันโดยดังนั้นจำนวนต่อไปคือ18
1782 / 18 = 99
99
ไม่หารเท่า ๆ กันโดยเหตุนี้เราใช้เวลาที่เหลือ:9 + 9 = 18
99 % 18 = 9
9
หารอย่างเห็นได้ชัดโดยเราจึงแบ่งมันและได้รับ9
1
ผลลัพธ์คือ3
เนื่องจากต้องการการดำเนินการ 3 ครั้งเพื่อให้สามารถเข้าถึง1
ได้
กฎและข้อกำหนด
จำนวนเต็มบางคนอาจจะมีผลรวมของตัวเลขเท่ากับ
1
เช่นหรือ10
100
โปรแกรมของคุณไม่จำเป็นต้องจัดการกับกรณีดังกล่าว ซึ่งหมายความว่าคุณจะรับประกันได้ว่าจำนวนเต็มที่ได้รับเป็นอินพุตไม่มีผลรวมของตัวเลขเท่ากับ1
และไม่มีการดำเนินการกับจำนวนเต็มที่กำหนดจะส่งผลให้ตัวเลขที่มีผลรวมของตัวเลข1
(ยกเว้น1
ตัวมันเองซึ่งก็คือ " เป้าหมาย ") ตัวอย่างเช่นคุณจะไม่ได้รับ10
หรือ20
เป็นอินพุต1
การป้อนข้อมูลจะเป็นจำนวนเต็มบวกที่สูงกว่าคุณสามารถใช้อินพุทและเอาท์พุทให้โดยใด ๆ ค่าเฉลี่ยมาตรฐาน
กรณีทดสอบ
อินพุต -> เอาท์พุท 2 -> 1 5 -> 1 9 -> 1 18 -> 2 72 -> 2 152790 -> 2 152 -> 3 666 -> 3 777 -> 3 2010 -> 3 898786854 -> 4
นี่คือโปรแกรมที่ช่วยให้คุณเห็นภาพกระบวนการและลองกรณีทดสอบเพิ่มเติม
นี่คือรหัส - กอล์ฟดังนั้นรหัสที่สั้นที่สุดในแต่ละภาษา (คะแนนเป็นไบต์) ชนะ!
8987868546
เป็นการป้อนข้อมูลที่ถูกต้องมันจะทำลายเครื่องมือทดสอบของคุณและยังหลาย ๆ (ถ้าไม่ทั้งหมด) ของคำตอบ ...
898786854
ไม่ใช่8987868546
(คุณได้เพิ่ม6
ในตอนท้าย)
8987868546
ไม่เท่ากับ 1 (ตรงตามกฎ 1 ) และ8987868546
เป็นจำนวนเต็มบวกสูงกว่า 1 (ตรงตามกฎ 2 )