สมมติว่าเรามีตัวเลข n เราต้องหาตัวหารของ n ตัวใดตัวหนึ่งดีกว่าตามเงื่อนไขเหล่านี้:เรามีตัวเลขสองตัว p และ q ตัวที่มีตัวเลขรวมกันเป็นจำนวนที่มากกว่าเรียกว่าดีกว่าอีกตัว เมื่อผลรวมของหลักเท่ากัน ตัวเลขที่น้อยกว่าจะดีกว่า
ดังนั้น ถ้าอินพุตเท่ากับ n =180 ผลลัพธ์จะเป็น 9 เพราะตัวหารคือ [1, 2, 3, 4, 5, 6, 9, 10, 12, 15, 18, 20, 30, 36, 45, 60, 90, 180]. ดังนั้นจำนวนที่มีจำนวนหลักสูงสุดคือ [9, 18, 36, 45, 90, 180] แต่ในจำนวนนั้น 9 เป็นตัวเลขที่ดีกว่าเนื่องจากค่าน้อยกว่า
เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -
- div :=1, md :=1
- สำหรับฉันในช่วง 2 ถึง n ทำ
- k :=ฉัน
- ถ้า n mod i> 0 แล้ว
- ติดตามตอนต่อไป
- s :=0
- ในขณะที่ k> 0, ทำ
- s :=s + k mod 10
- k :=k / 10
- ถ้า s> md แล้ว
- md :=s
- div :=ฉัน
- ผลตอบแทน div
ตัวอย่าง
ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น
def solve(n): div = 1 md = 1 for i in range(2, n + 1): k = i if n % i > 0: continue s = 0 while k > 0: s += k % 10 k /= 10 if s > md: md = s div = i return div n = 180 print(solve(n))
อินพุต
180
ผลลัพธ์
9