您的位置:首页 > 其它

大数阶乘

2014-07-27 21:27 176 查看
#include <stdio.h>

#define N 2700

int main(void)
{
	int n;
	
	while (scanf("%d", &n) != EOF)
	{
		int i, k, tmp, carry;
		int cnt = 0;    /*结果的位数*/
		int A
 = {1}; /*初始值为1*/

		for (k=2; k<=n; ++k)
		{
			carry = 0;

			for (i=0; i<=cnt; ++i)
			{
				tmp   = (A[i] * k) + carry;
				A[i]  = tmp % 10; /*本位*/
				carry = tmp/10;   /*向高位的进位*/
				
				if (i==cnt && carry!=0)
				{
					++cnt; /*存在进位时,位数增1*/
				}
			}
		}

		for (i=cnt; i>=0; --i)
		{
			printf("%d", A[i]);
		}
		printf("\n");	
	}
	
	return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: