社区讨论
调试了半天最后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 条回复,欢迎继续交流。
正在加载回复...