3.Extra Long Factorials
Solution:
int calcFact(int x, vector<int> &res, int resSize)
{
int carry = 0;
for (int i = 0; i < resSize; i++)
{
int p = res[i] * x + carry;
res[i] = p % 10;
carry = p / 10;
}
while (carry > 0)
{
int x = carry % 10;
res[resSize] = x;
resSize++;
carry = carry / 10;
}
return resSize;
}
void extraLongFactorials(int n)
{
vector<int> res(158);
int resSize = 1;
res[0] = 1;
for (int i = 2; i <= n; i++)
{
resSize = calcFact(i, res, resSize);
}
for (int i = resSize - 1; i >= 0; i--)
{
cout << res[i];
}
}Last updated