C/C++

Нужна помощь при решении задачи в c++

Дано три числа a,b,c найти сумму факториалов a!+b!+c!a!+b!+c!. Для расчета факториала написать функцию
#include <iostream>
#include <cstdlib>

using namespace std;

int factorial(int num)
{
if(num < 0)
{
cerr << "Неверное значение для факториала!" << endl;
exit(1);
}
int f = 1;
for(int x = 2; x <= num; x++)
f *= x;
return f;
}

int main()
{
int a,b,c;
cout << "a = ";
cin >> a;
cout << "b = ";
cin >> b;
cout << "c = ";
cin >> c;
cout << "a! + b! + c! = ";
cout << a << "! + " << b << "! + " << c << "! = ";
cout << factorial(a) + factorial(b) + factorial(c);
cout << '.' << endl;

return 0;
}
Дмитрий Ильянен
Дмитрий Ильянен
80 550
Лучший ответ
Иван Яблонский Спасибо большое !!!
Николай Цветанский А меня так задолбало ограничение на диапазон целых чисел стандартных типов, что я отныне и навсегда буду при любом подходящем случае вставлять библиотеку <gmp.h> чтобы можно было работать с целыми числами любой длины (как в Питоне). Кстати, эта библиотека есть не только в C/C++, но даже почему-то и в PHP. А иначе даже, например, 21! точно не посчитать...
Чтоб можно было брать факториалы неотрицательных целых чисел больших двадцати:
#include <gmp.h>
#include <iostream>
using namespace std;
mpz_t p;
void f(unsigned long n)
{ mpz_init_set_ui(p, 1);
for (int i = 1; i <= n; i++) mpz_mul_ui(p, p, i); }
int main()
{ mpz_t sum; unsigned long a, b, c;
string blue = "\033[34m", magenta = "\033[35m",
biruze = "\033[36m", red = "\033[31m",
yellow = "\033[33m";
for (;;)
{ mpz_init_set_ui(sum, 0);
cout << blue << "a b c: " << red;
cin >> a >> b >> c;
f(a); mpz_add(sum, sum, p);
f(b); mpz_add(sum, sum, p);
f(c); mpz_add(sum, sum, p);
cout << biruze << a << "!+" << b <<
"!+" << c << '!' << yellow << " = " <<
magenta << mpz_get_str(NULL, 10, sum)
<< endl; } getchar(); }
#include <iostream>
#include <cstdlib>

using namespace std;

int factorial(int num)
{
if(num < 0)
{
cerr << "Неверное значение для факториала!" << endl;
exit(1);
}
int f = 1;
for(int x = 2; x <= num; x++)
f *= x;
return f;
}

int main()
{
int a,b,c;
cout << "a = ";
cin >> a;
cout << "b = ";
cin >> b;
cout << "c = ";
cin >> c;
cout << "a! + b! + c! = ";
cout << a << "! + " << b << "! + " << c << "! = ";
cout << factorial(a) + factorial(b) + factorial(c);
cout << '.' << endl;

return 0;
}