社区讨论

调试了半天最后re了,真的破防了

P1009[NOIP 1998 普及组] 阶乘之和参与者 3已保存回复 3

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
3 条
当前快照
1 份
快照标识符
@loh0iaw2
此快照首次捕获于
2023/11/02 17:56
2 年前
此快照最后确认于
2023/11/02 20:01
2 年前
查看原帖
C
#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;
}

回复

3 条回复,欢迎继续交流。

正在加载回复...