20180605
/*大数阶乘第一次*/
#include <iostream>
using namespace std;
int main() {
int a[20001];//存放每一位所得的数
int temp, digit, n, i, j;
cin>>n;
j = 0;
a[0] = 1;
digit = 1;
for(i = 2; i <= n; i++) {
int num = 0;
for(j = 0; j < digit; j++) {
temp = a[j]*i + num;
a[j] = temp%10;
num = temp/10;
}
while(num) {
a[digit] = num%10;
num /= 10;
digit ++;
}
}
for(i = digit - 1; i >= 0; i--) {
cout<<a[i];
}
cout<<endl;
return 0;
}
20180606 二刷
/*第二次*/
#include <iostream>
using namespace std;
int main() {
int a[20010];
int temp, digit, n, i, j;
cin>>n;
j = 0;
a[0] = 1;
digit = 1;
for(i = 2; i <= n; i++) {
int num = 0;
for(j = 0; j < digit; j++) {
temp = a[j]*i + num;
a[j] = temp%10;
num = temp/10;
}
while(num) {
a[digit] = num%10;
num /= 10;
digit ++;
}
}
for(i = digit - 1; i >= 0; i--) {
cout<<a[i];
}
cout<<endl;
return 0;
}