题目描述:输入一个正整数n,输出n!的值。
输入输入包含一个正整数n,n< =1000。
输出 n!的准确值
使用一个数组A来表示一个大整数a,A[0]表示a的个位,A[1]表示a的十位,依次类推。
将a乘以一个整数k变为将数组A的每一个元素都乘以k
代码如下,跟乘法很类似的;
#include<bits/stdc++.h>
using namespace std;
int main(void){
int n, a[5000], s, i, j, t, d;
scanf("%d", &n);
memset(a, 0, sizeof(a));
a[0] = 1; //第一个元素是1,表示1的阶乘
d = 1; //阶乘的位数
for (i = 2; i <= n; i++) {
s = 0;
for (j = 0; j < d; j++) {
t = a[j] * i + s; // 当前位置的数=之前在这个位置上的数乘以i,然后加上前一位数的进位
a[j] = t % 10; //该位置的数 即为当前值对10的取余
s = t / 10; //进位即为该位置的数 除以10
}
while (s) { //如果还不是0ÿ