大数的阶乘算法

简介:
#include <stdio.h>

#define MAX_LENGTH 20000

// 大数阶乘算法
int main()
{
	int i, j, temp;
	int bitSize = 1;  // 结果的位数
	int result[MAX_LENGTH];
	int n = 0; // 求n的阶乘
	int carryBit = 0;

	scanf("%d", &n);
    result[0] = 1;

	for (i = 2; i <= n; i++)
	{
		carryBit = 0; // 进位位

		// 每次都是将当前结果从低位到高位依次与i相乘
		for (j = 1; j <= bitSize; j++) 
		{
			temp = result[j - 1] * i + carryBit;
			result[j - 1] = temp % 10; 
			carryBit = temp / 10;
		}

		while (carryBit != 0)
		{
			result[bitSize++] = carryBit % 10;
			carryBit /= 10;
		}
	}

	// 结果是倒序的,所以要倒着输出
	for (i = bitSize - 1; i >= 0; i--)
	{
		printf("%d", result[i]);
	}
	putchar(10);

	return 0;
}

目录
相关文章
|
算法 Java C++
试题 算法训练 阶乘
试题 算法训练 阶乘
108 0
|
算法 Java C语言
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-1 算法训练 区间k大数查询
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-1 算法训练 区间k大数查询
135 0
|
算法 定位技术
数据结构与算法学习九:学习递归。递归的经典实例:打印问题、阶乘问题、递归-迷宫问题、八皇后问题
本文详细介绍了递归的概念、重要规则、形式,并展示了递归在解决打印问题、阶乘问题、迷宫问题和八皇后问题等经典实例中的应用。
292 0
|
存储 机器学习/深度学习 算法
数据结构和算法学习记录——空间复杂度的计算(冒泡排序、阶乘递归、斐波那契数列递归、常见复杂度对比、栈帧、栈溢出)
数据结构和算法学习记录——空间复杂度的计算(冒泡排序、阶乘递归、斐波那契数列递归、常见复杂度对比、栈帧、栈溢出)
354 0
|
JavaScript 算法
JS算法-阶乘后的零
JS算法-阶乘后的零
|
机器学习/深度学习 算法 vr&ar
☆打卡算法☆LeetCode 172. 阶乘后的零 算法解析
☆打卡算法☆LeetCode 172. 阶乘后的零 算法解析
|
算法
基础算法(大数操作 前缀和 差分)
基础算法(大数操作 前缀和 差分)
173 0
|
2月前
|
机器学习/深度学习 算法 机器人
【水下图像增强融合算法】基于融合的水下图像与视频增强研究(Matlab代码实现)
【水下图像增强融合算法】基于融合的水下图像与视频增强研究(Matlab代码实现)
203 0
|
2月前
|
数据采集 分布式计算 并行计算
mRMR算法实现特征选择-MATLAB
mRMR算法实现特征选择-MATLAB
152 2

热门文章

最新文章