บทนำ
Demlo Number คือกำลังสองของเลขที่ประกอบด้วย 1 ทั้งหมด เช่น 1²=1, 11²=121, 111²=12321, 1111²=1234321
รูปแบบ
111...1 (n ตัว) ^ 2 = 1 2 3 ... n-1 n n-1 ... 3 2 1
ขั้นตอนการแก้ปัญหา
- รับสตริงของ 1 ซ้ำๆ
- ความยาวสตริง = n
- สร้างสตริงผลลัพธ์: 1 ถึง n แล้ว n-1 ถึง 1
ตัวอย่างโค้ด
#include <bits/stdc++.h>
using namespace std;
string getDemloNumber(string str) {
int len = str.length();
string demloNumber = "";
for (int i = 1; i <= len; i++) {
demloNumber += char(i + '0');
}
for (int i = len - 1; i >= 1; i--) {
demloNumber += char(i + '0');
}
return demloNumber;
}
int main() {
string str = "1111111";
cout << getDemloNumber(str) << endl;
return 0;
}
ผลลัพธ์
1234567654321
ข้อจำกัด
วิธีนี้ใช้ได้เฉพาะ n ≤ 9 (เพราะตัวเลข 10 มี 2 หลัก) สำหรับ n > 9 ต้องจัดการ carry การบวกจริง หรือใช้ BigInteger
สรุป
Demlo Number มีรูปแบบสวยงาม 123...n...321 เป็นโจทย์คณิตศาสตร์สนุก สำหรับ n ใหญ่ต้อง implement การคูณใหญ่จริง