欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

《PTA-基础练习集》6-10 阶乘计算升级版

程序员文章站 2022-06-07 09:58:25
...

《PTA-基础练习集》6-10 阶乘计算升级版

这题目乍一看不会,仔细想想也不会。

经搜索发现了方法。 写的很好很仔细

 

学习了之后不急着看代码,先手撸一套,C语言的

void Print_Factorial ( const int N )
{
    int i=1,To_N=1,a[3000]={1};//定义循环变量,并初始化数组
    int pdt_i,extra=0;         //定义i乘积,乘积的进位

    if(N <0) {printf("Invalid input\n");return;}
    while(To_N++ <N){
		for(i=0;i<3000;i++){
			pdt_i=a[i]*To_N+extra;
			a[i]=pdt_i%10;
			extra=pdt_i/10;		
		}
    }

    i=3000;while(a[--i]==0);    //定位第一个非0数字
    while(i>=0)
	    printf("%d",a[i--]);//逆序打印
}

 

对比一下,复杂度提升了,每一次乘法会操作所有元素,但是*按时能跑完,Accept~ 

 

《PTA-基础练习集》6-10 阶乘计算升级版

 

 

 

相关标签: PTA