题意描述
求 10000 以内 n的阶乘。
输入格式
只有一行输入,整数 n(0≤n≤10000)
输出格式
一行,即 n!的值
#include <iostream>
using namespace std;
int main() {
int a[10000] = {1}; // 定义个数组,初始化为1.
int n; // 定义n表示输入的数
cin >> n;
int a_lengrh = 1,num = 0,t; // 定义a_length为数组的中元素的总个数,num为进位所用,初始为0,t表示两个数相乘的积。
for (int i = 1; i <= n; ++i) {
for (int j = 0; j < a_lengrh; ++j) {
t = a[j] * i + num; // 循环,对应j索引的值与i索引对应的值相乘,然后加上进位的值。
a[j] = t % 10; // 取余数。
num = t / 10; // 去进位。
}
while (num){
a[a_lengrh] = num % 10; //a[a_length]对应的是取余的值
num /= 10; // 进位
a_lengrh++; // 数组的元素个数增加。
}
}
for (int i = a_lengrh - 1; i >= 0; i--) { // 倒序输出。
printf("%d",a[i]);
//cout << a[i];
}
cout << " " << endl;
std::cout << "Hello, World!" << std::endl;
return 0;
}
注意的要点和前两篇的要点内容差不多,仔细分析斟酌。