蒟蒻80求助

P1249 最大乘积

@[lzj20110120](/user/1139975) a,b数组开小了!!!(见//!处) ```cpp #include<bits/stdc++.h> using namespace std; int a[200001]; //! int b[200001]; //! void print(int n) { for (int i=n;i>=1;i--) { cout<<b[i]; } } int mul(int c[],int n) { int len=1; b[1]=1; for(int i=1;i<=n;i++) { for (int j=1;j<=len;j++){ b[j]*=c[i]; } for (int j=1;j<=len+1;j++){ b[j+1]+=b[j]/10; b[j]%=10; } len+=3; for(;!b[len];len--){} } return len; } int main() { int n,j=1,sum=0; cin>>n; if(n==3){ cout<<"1 2"<<endl<<2; return 0; } if(n==4){ cout<<"1 3"<<endl<<3; return 0; } for (int i=2;sum<n;i++,j++) { a[j]=i; sum+=i; } int gap=sum-n; if (gap==0){ j--; cout<<2; for(int i=2;i<=j;i++) { cout<<' '<<a[i]; } cout<<endl; print(mul(a,j)); } else if(gap==1) { j--; for(int i=2;i<=j;i++) { a[i-1]=a[i]; } a[j-1]++; cout<<a[1]; for(int i=2;i<j;i++) { cout<<' '<<a[i]; } cout<<endl; print(mul(a,j-1)); } else { j--; for(int i=gap-1;i<=j-1;i++){ a[i]=a[i+1]; } cout<<a[1]; for(int i=2;i<j;i++) { cout<<' '<<a[i]; } cout<<endl; print(mul(a,j-1)); } return 0; } ```
by sybnb @ 2024-02-06 16:20:09


@[sybnb](/user/995948) 万分感谢,已关
by lzj20110120 @ 2024-02-09 09:55:01


|