题目描述
编写一个程序,计算1977!的值
思路
- 1977!的值显然已经超过了我们一个double或long long类型变量能表示的范围,所以要考虑使用数组
- 初始化fc[0]为1,即1的阶乘。
- 依次让数组每个数都乘2、3、4、5、…、1977,然后再根据数是否大于9决定是否进位,前一位的数加上进位数判断是否进位
代码
#include <stdio.h>
int fc[10000] = {0};
int weishu = 1;
void factor(int i);
int main()
{
int i;
fc[0] = 1;
for(i = 2; i <= 1977; i++)
{
factor(i);
}
for(i = weishu - 1; i >= 0; i--)
{
printf( "%d", fc[i]);
}
return 0;
}
void factor(int i)
{
int jinwei, j;
for(j = 0; j < weishu; j++)
{
fc[j] *= i;
}
for(j = 0; j < weishu; j++)
{
if(fc[j] / 10 && (j == weishu - 1))
weishu++;
fc[j + 1] += fc[j] / 10;
fc[j] %= 10;
}
}