รับจำนวนเต็มบวกNงานของคุณคือส่งคืนจำนวนขั้นตอนที่ต้องการโดยอัลกอริทึมต่อไปนี้เพื่อไปถึงN :
หาจำนวนที่น้อยที่สุดสามเหลี่ยมT ฉันเช่นว่าT ฉัน ≥ N สร้างรายการที่สอดคล้องกันL = [1, 2, ... , ผม]
ในขณะที่ผลรวมของเงื่อนไขของLมากกว่าNให้ลบคำแรกออกจากรายการ
หากผลรวมของเงื่อนไขของLน้อยกว่าNให้เพิ่มค่าiและผนวกเข้ากับรายการ ดำเนินการต่อด้วยขั้นตอนที่ 2
เราจะหยุดทันทีที่Nถึง เฉพาะขั้นตอนแรกเท่านั้นที่ดำเนินการอย่างเป็นระบบ ขั้นตอนที่ # 2 และ # 3 อาจไม่ได้รับการดำเนินการเลย
ตัวอย่าง
ด้านล่างนี้เป็นตัวอย่างสำหรับN = 11 :
ดังนั้นการส่งออกคาดว่าN = 11คือ4
ตัวอย่างอื่น ๆ :
- N = 5 - เราเริ่มต้นด้วย T 3 = 1 + 2 + 3 = 6ตามด้วย 2 + 3 = 5 ผลลัพธ์ที่คาดหวัง:2
- N = 10 - เฉพาะขั้นตอนแรกคือต้องเนื่องจาก 10เป็นจำนวนสามเหลี่ยม: T 4 = 1 + 2 + 3 + 4 = 10 ผลลัพธ์ที่คาดหวัง:1
100 ค่าแรก
ด้านล่างนี้เป็นผลลัพธ์สำหรับ1 ≤ N ≤ 100 :
1, 2, 1, 4, 2, 1, 2, 10, 2, 1, 4, 2, 6, 2, 1, 22, 8, 2, 10, 2,
1, 2, 12, 6, 2, 4, 2, 1, 16, 2, 18, 50, 2, 6, 2, 1, 22, 6, 2, 4,
26, 2, 28, 2, 1, 8, 30, 16, 2, 6, 4, 2, 36, 2, 1, 2, 4, 12, 40, 2,
42, 14, 2,108, 2, 1, 46, 2, 6, 4, 50, 2, 52, 18, 2, 4, 2, 1, 56, 12,
2, 20, 60, 4, 2, 22, 10, 2, 66, 2, 1, 4, 10, 24, 2, 40, 72, 8, 2, 6
กฎระเบียบ
- คุณสามารถเขียนโปรแกรมเต็มรูปแบบหรือฟังก์ชั่นที่พิมพ์หรือส่งคืนผลลัพธ์
- คุณต้องประมวลผลN ≤ 65536ในเวลาน้อยกว่าหนึ่งนาทีสำหรับฮาร์ดแวร์ระดับกลาง
- ให้เวลาเพียงพอโปรแกรม / ฟังก์ชั่นของคุณควรทำงานในทางทฤษฎีสำหรับค่าใด ๆ ของNที่ได้รับการสนับสนุนโดยภาษาของคุณ หากไม่เป็นเช่นนั้นโปรดอธิบายว่าเพราะอะไรในคำตอบของคุณ
- นี่คือรหัสกอล์ฟดังนั้นคำตอบที่สั้นที่สุดในจำนวนไบต์ชนะ!