调试了半天最后re了,真的破防了
查看原帖
调试了半天最后re了,真的破防了
981619
Ceceliaaaaa楼主2023/11/2 17:55
#include<stdio.h>
int main(void)
{
	int use_for_multiple[1005]={0};
	int result[1005]={0};
	use_for_multiple[0]=result[0]=1;
	int n,i,j,pointer;
	scanf("%d",&n);
	for(i=2;i<=n;i++){
		for(j=0;j<=pointer;j++)
			use_for_multiple[j]*=i;//完成阶乘 
	j=0;
	do{
		while(use_for_multiple[j]>9){//防止 use_for_multiple[j]>99的情况 
		use_for_multiple[j+1]+=(use_for_multiple[j]/10);
		use_for_multiple[j]%=10;
		} 
		++j; //顺带完成数位更新 
	} while(use_for_multiple[j]>0||j<=pointer);
	
	j-=1;
	pointer=j;
		//每个i的阶乘再与reuslt相加 
	for(;j>=0;j--)
		result[j]+=use_for_multiple[j];

	}
	
	j=0;
	do{
		while(result[j]>9){//防止 use_for_multiple[j]>99的情况 
		result[j+1]+=result[j]/10;	
		result[j]%=10;
		} 
		j++; //顺带完成数位更新 
	} while(result[j]>0||j<=pointer);
	
	j-=1;
	for(;j>=0;j--)
		printf("%d",result[j]);
		
	return 0;
}
2023/11/2 17:55
加载中...