《PTA-基础练习集》6-10 阶乘计算升级版
程序员文章站
2022-06-07 09:58:25
...
这题目乍一看不会,仔细想想也不会。
经搜索发现了方法。 写的很好很仔细
学习了之后不急着看代码,先手撸一套,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~
上一篇: Excel分析每个人的销售额是否达标以销售完成情况为例
下一篇: 7-15 计算圆周率 (15 分)