社区讨论

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 条回复,欢迎继续交流。

正在加载回复...