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

โปรแกรม C++ หาผลรวมของหลักในแฟกทอเรียลของตัวเลข


สมมติว่าเรามีตัวเลข n งานของเราคือหาผลรวมของหลักใน n! พิจารณา n = 5 แล้ว n! = 120 ผลลัพธ์จะเป็น 3

เพื่อแก้ปัญหานี้ เราจะสร้างเวกเตอร์เพื่อเก็บหลักของแฟกทอเรียลและเริ่มต้นด้วย 1 จากนั้นคูณ 1 ถึง n ทีละตัวกับเวกเตอร์ ตอนนี้รวมองค์ประกอบทั้งหมดในเวกเตอร์และคืนค่าผลรวม

ตัวอย่างโค้ด C++

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

void vectorMultiply(vector &v, int x) {
    int carry = 0, res;
    int size = v.size();
    for (int i = 0 ; i < size ; i++) {
        int res = carry + v[i] * x;
        v[i] = res % 10;
        carry = res / 10;
    }
    while (carry != 0) {
        v.push_back(carry % 10);
        carry /= 10;
    }
}

int digitSumOfFact(int n) {
    vector v;
    v.push_back(1);
    for (int i=1; i<=n; i++)
        vectorMultiply(v, i);
    int sum = 0;
    int size = v.size();
    for (int i = 0 ; i < size ; i++)
        sum += v[i];
    return sum;
}

int main() {
    int n = 40;
    cout << "Number of digits in " << n << "! is: " << digitSumOfFact(n);
}

ผลลัพธ์

Number of digits in 40! is: 189