623. 500!
Для каждого входного n вычислить n!.
Вход. Каждая строка содержит значение n (n £ 1000).
Выход. Для
каждого входного n вывести две строки.
Первая строка содержит значение n, за
которым следует ‘!’. Вторая строка содержит значение n!.
10
30
50
100
10!
3628800
30!
265252859812191058636308480000000
50!
30414093201713378043612608166064768844377641568960512000000000000
100!
93326215443944152681699238856266700490715968264381621468592963895217599993229915608941463976156518286253697920827223758251185210916864000000000000000000000000
длинная арифметика
Воспользуемся классом
BigInteger. Вычислим все значения факториалов чисел от 0 до 1000. Для каждого
входного n,
выводим соответствующее значение n!.
Предвычисление факториалов всех чисел обязательно, иначе получим Time Limit.
Установим длину чисел MAXLENGTH равной 3000, значения
факториалов будут вычисляться для всех чисел от 0 до MAXN-1. Объявим глобальный
массив fact, для которого fact[i]= i!.
#define MAXLENGTH 3000
#define MAXN 1001
BigInteger fact[MAXN];
Вычисляем все значения fact[i]= i!,
i = 0, …, MAXN-1. Для каждого
входного i выводим значение fact[i] при помощи функции print.
fact[0] = fact[1] = BigInteger(1);
for(i=2;i<MAXN;i++)
fact[i] = fact[i-1]*i;
while(scanf("%d",&i)
== 1)
{
printf("%d!\n",i);
fact[i].print();
}