ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

6-3 阶乘计算升级版 (20 分) (高精度)

2019-08-31 17:36:18  阅读:418  来源: 互联网

标签:digit 20 int void Factorial Print 阶乘 升级版


本题要求实现一个打印非负整数阶乘的函数。

函数接口定义:
void Print_Factorial ( const int N );
其中N是用户传入的参数,其值不超过1000。如果N是非负整数,则该函数必须在一行中打印出N!的值,否则打印“Invalid input”。

裁判测试程序样例:
#include <stdio.h>

void Print_Factorial ( const int N );

int main()
{
int N;

scanf("%d", &N);
Print_Factorial(N);
return 0;

}

/* 你的代码将被嵌在这里 */
输入样例:
15
输出样例:
1307674368000

solution:利用数组实现一个比较简单的大数阶乘

void Print_Factorial ( const int N )
{
	if (N < 0)
	{
		printf("Invalid input\n");
	}
	else
	{
		int a[3000];
		int temp, num, digit; //temp每一位的结果 num进位 digit结果的位数
		int i, j;
		a[0] = 1;
		digit = 1;//从第一位开始 
		for (i = 2; i <= N; ++i)
		{
			num = 0;
			for (j = 0; j < digit; ++j)
			{
				temp = a[j] * i + num;
				a[j] = temp % 10;//把当前位的数字存入数字 
				num = temp / 10;//向前面一位进位 
			}
			while (num) //当i的阶乘算完,仍有进位,则数组需扩大
			{
				a[digit] = num % 10;
				num /= 10;
				digit++;
			}
		 } 
		 for (i = digit - 1; i >= 0; i--)
		 {
		 	printf("%d", a[i]);
		 }
	}
 } 

标签:digit,20,int,void,Factorial,Print,阶乘,升级版
来源: https://blog.csdn.net/weixin_44014982/article/details/100175170

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有