//思路:2021!这个肯定long也存不下,所有使用数组存储每位
//a[0]存储个位数值, a[1]存储十位数值.....
int result[100000] = {1};
int num = 2021;
int count = 1;//用于记录现在多少位
int temp = 0; //用于存放进位
for (int i = 1; i <= num; i++) {
for (int j = 0; j < count; j++) {
temp = result[j] * i + temp;
result[j] = temp % 10;
temp = temp / 10;
}
while (temp > 0) {//处理高位
result[count++] = temp % 10;
temp = temp / 10;
}
}
//打印结果
for (int i = count - 1; i >= 0; i--) {
printf("%d", result[i]);
}