Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

Demlo Number (กำลังสองของ 11...1) ใน C++

บทนำ

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. รับสตริงของ 1 ซ้ำๆ
  2. ความยาวสตริง = n
  3. สร้างสตริงผลลัพธ์: 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 การคูณใหญ่จริง