木子CoCo~


私信TA

用户名:uq_78084890535

访问量:8476

签 名:

等  级
排  名 1169
经  验 3134
参赛次数 1
文章发表 24
年  龄 20
在职情况 学生
学  校 泰州学院
专  业 计算机科学与技术

  自我简介:

努力是奇迹的别名!

解题思路:
阶乘相乘.PNG

参考代码:

#include<stdio.h>
#include<stdlib.h>
const int maxn=1e5+5;
int a[maxn];
int main(){
	int n,c,d=0;
	scanf("%d",&n);
	//初始化结束 
	a[0]=1;
	//开始计算阶乘
	for(int i=2;i<=n;i++){
		c=0;//每次相乘时,进位存储器需要更新为0 
		for(int j=0;j<maxn;j++){
			d=a[j]*i+c;//a[j]是当前被乘i的哪一位上的数字,"+c"是进位 
			a[j]=d%10;//模10,是计算个位上的数字,赋值给f[j] 
			c=d/10; //除10,是取10位上的数字 
		}
	} 
	for(int i=maxn-1;i>=0;i--){
		if(a[i]!=0){
			for(int k=i;k>=0;k--){
				printf("%d",a[k]);
			}
			break;
		}
	} 
	printf("\n");
	return 0;
}


 

0.0分

0 人评分

  评论区

  • «
  • »