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

เลข Disarium (Disarium Number) ใน C++


Disarium Number คืออะไร?

จำนวนที่ ผลรวมของแต่ละหลัก ยกกำลังด้วยตำแหน่งของมัน เท่ากับตัวเลขเอง

ตัวอย่าง: 518 = 5¹ + 1² + 8³ = 5 + 1 + 512 = 518 → เป็น Disarium

อัลกอริธึม

  1. นับจำนวนหลักของ n
  2. แยกหลักจากขวาไปซ้าย ยกกำลังด้วยตำแหน่ง (นับจากซ้าย)
  3. รวมค่าแล้วเปรียบเทียบกับ n

โปรแกรมตัวอย่าง

#include <iostream>
#include <cmath>
using namespace std;

int countDigits(int n) {
    int cnt = 0;
    while (n) { n /= 10; cnt++; }
    return cnt;
}

bool isDisarium(int n) {
    int original = n;
    int digits = countDigits(n);
    int sum = 0;
    while (n > 0) {
        int d = n % 10;
        sum += pow(d, digits--);
        n /= 10;
    }
    return sum == original;
}

int main() {
    int n = 518;
    cout << n << (isDisarium(n) ? " is a Disarium Number" : " is not a Disarium Number");
    return 0;
}

ผลลัพธ์

518 is a Disarium Number