একটি সংখ্যা n দেওয়া আছে। n! (ফ্যাক্টোরিয়াল) এর ডিজিটগুলোর যোগফল বের করতে হবে। বড় ফ্যাক্টোরিয়ালের জন্য ভেক্টরে ডিজিট সংরক্ষণ করে গুণ করা হয়।
উদাহরণ
#include <iostream>
#include <vector>
using namespace std;
void vectorMultiply(vector<int> &v, int x) {
int carry = 0;
for (int i = 0; i < v.size(); i++) {
int res = carry + v[i] * x;
v[i] = res % 10;
carry = res / 10;
}
while (carry) { v.push_back(carry % 10); carry /= 10; }
}
int digitSumOfFact(int n) {
vector<int> v = {1};
for (int i = 2; i <= n; i++) vectorMultiply(v, i);
int sum = 0;
for (int d : v) sum += d;
return sum;
}
int main() {
int n = 40;
cout << "Sum of digits in " << n << "! is: " << digitSumOfFact(n);
return 0;
}
আউটপুট
Sum of digits in 40! is: 189