N!
Problem Description
Given an integer N(0 ≤ N ≤ 10000), your task is to calculate N!
Input
One N in one line, process to the end of file.
Output
For each N, output N! in one line.
Sample Input
1
2
3
Sample Output
1
2
6
思路:
用数组记录每一位数,模拟算术过程。例如123x111=1x111+02x111+003x111,每一数组只保留一位数,倒序保存。
#include <iostream>
#include <cmath>
#include <cstdio>
using namespace std;
int main()
{
int a[100000];
int temp, n;
while (cin >> n)//输入要求数的阶层
{
a[0] = 1;
int weishu = 1;//记录位数
for (int i = 2; i <= n; i++)
{
int num = 0;//n × (n+1)多出来的位数
for (int j = 0; j < weishu; j++)
{
temp = a[j] * i + num;
a[j] = temp % 10;
num = temp / 10;
}
while (num)//多出来的位数入数组
{
a[weishu] = num % 10;
num /= 10;
weishu++;
}
}
for (int i = weishu - 1; i >= 0; i--)//倒序输出数字
{
cout << a[i];
}
cout << endl;
}
return 0;
}