社区讨论
50分求助
P1009[NOIP 1998 普及组] 阶乘之和参与者 3已保存回复 2
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 2 条
- 当前快照
- 1 份
- 快照标识符
- @lz6d4vxe
- 此快照首次捕获于
- 2024/07/29 10:21 2 年前
- 此快照最后确认于
- 2024/07/29 11:06 2 年前
CPP
#include <bits/stdc++.h>
using namespace std;
const int kMAXN = 10000+10;
int a[kMAXN]={0},s[kMAXN];
int main(){
int n;
scanf("%d",&n);
a[0]=1,a[1]=1;
s[0]=1,s[1]=1;
for(int i=2;i<=n;i++){
int ca=0;
for(int j=1;j<=a[0]+1;j++){
int po=a[j]*i+ca;
a[j]=po%10;
ca=po/10;
}
while(a[a[0]+1]) a[0]++;
for(int m=1;m<=a[0];m++) cout<<a[m]<<" ";
cout<<endl;
int len=a[0]>s[0]?a[0]:s[0];
for(int j=1;j<=len;j++){
cout<<s[j]<<"+"<<a[j];
s[j]+=a[j];
cout<<"="<<s[j]<<endl;
if(s[j]>=10)s[j+1]++,s[j]-=10,cout<<"carry"<<s[j+1]<<" "<<s[j]<<endl;
}
if(s[s[0]+1]) s[0]++;
}
for(int i=s[0];i>=1;i--) printf("%d",s[i]);
return 0;
}
回复
共 2 条回复,欢迎继续交流。
正在加载回复...