เราจะเขียนโปรแกรมคำนวณผลรวมของอนุกรมที่ตัวเลข n ซ้ำกันเพิ่มขึ้นเรื่อยๆ m ครั้ง
ตัวอย่าง
Input: n=3, m=4 Series: 3 + 33 + 333 + 3333 Output: 3702 Input: n=5, m=5 Series: 5 + 55 + 555 + 5555 + 55555 Output: 61725
อัลกอริทึม
1. กำหนด n และ m 2. ตัวแปร change = n (ค่าในแต่ละพจน์) 3. ตัวแปร s = 0 (ผลรวมสะสม) 4. วนลูป m ครั้ง: 4.1 บวก change เข้า s 4.2 อัปเดต change = change * 10 + n (เพิ่มหลัก n ต่อท้าย) 5. พิมพ์ผลรวม s
โค้ดตัวอย่าง
n, m = 3, 4
change = n
s = 0
for i in range(m):
s += change
change = change * 10 + n
print(s)ผลลัพธ์
3702
ตัวอย่างที่ 2
n, m = 5, 5
change = n
s = 0
for i in range(m):
s += change
change = change * 10 + n
print(s)ผลลัพธ์
61725
คำอธิบายตรรกะ
สูตร change = change * 10 + n ทำงานโดยการเลื่อนหลักของ change ไปทางซ้าย 1 ตำแหน่ง (คูณ 10) แล้วบวก n เข้าไปที่หลักหน่วย ทำให้ได้พจน์ถัดไปของอนุกรม
สรุป
อัลกอริทึมนี้คำนวณอนุกรมได้ใน O(m) time และ O(1) space หากมีข้อสงสัย สามารถถามได้ในส่วนความคิดเห็น