用高精度方法,求n!的精确值(n以一般整数输入)。
输入格式:
一个整数
输出格式:
一个整数
输入样例:
10
输出样例:
3628800
#include<bits/stdc++.h>
using namespace std;
#define max 10004
int main() {
int n;cin >> n;
int a[max] = { 0 };
a[1] = 1;
int s,i; //s为乘积
int x = 0;//x为进位
for (i = 2;i <= n;i++) {
for (int j = 1;j < max;j++) {
s = a[j] * i+x;
x = s/ 10;
a[j] = s % 10;
}
}
for (i = max - 1;i >= 0;i--) {
if (a[i]) break;
}
for (int j = i;j >= 1;j--) {
cout << a[j];
}
}
使用一个数组a来表示一个大整数A,a[0]表示A的个位,a[1]表示A的十位,依次类推。
A乘以某一数K转化成A的每一位都乘以k,并且处理相应的位数
由于n的阶乘为1*2*3*………..*n,故数组的第一项应初始化为1,其余初始化为0(如图)