求助,希望有人帮我看一下

P1249 最大乘积

@[zwh612_915](/user/386984) 你这代码有些难改,看我的吧 ``` #include <bits/stdc++.h> //#define LOCAL using namespace std; typedef long long ll; set<int>number; vector<ll> result; const ll BASE=1e8; string tostring(ll num){ string t=""; while(num>0){ t=(char)(num%10+'0')+t; num/=10; } while(t.size()<8) t="0"+t; return t; } int main() { #ifdef LOCAL ifstream fin("1.txt"); streambuf*p; p=cin.rdbuf(fin.rdbuf()); #endif // LOCAL int n; while(cin>>n){ number.clear(); int sum=0; int i=1; while(sum<n){ i++; sum+=i; number.insert(i); } int rubbish=sum-n; if(rubbish==1){ number.erase(2); number.erase(i); number.insert(i+1); }else{ number.erase(rubbish); } //输出set里的所有数据 for(set<int>::iterator it=number.begin();it!=number.end();it++){ if(it!=number.begin()) cout<<" "; cout<<*it; } cout<<endl; result.clear(); result.push_back(1); //高精度乘法 for(set<int>::iterator it=number.begin();it!=number.end();it++){ ll more=0; for(int unsigned j=0;j<result.size();j++){ ll temp=((ll)(*it)*result[j])+more; more=temp/BASE; result[j]=temp%BASE; } if(more>0) result.push_back(more); } //高精度输出 for(int unsigned i=result.size();i>0;i--){ if(result.size()==i) cout<<result[i-1]; else{ cout<<tostring(result[i-1]); } } cout<<endl; } #ifdef LOCAL fin.close(); #endif // LOCAL } ```
by Spir1t @ 2023-04-08 14:08:42


@[Sky_lzr03](/user/747009) 之前改过了 谢谢你的帮助
by kd_homelander915 @ 2023-04-09 09:06:11


@[zwh612_915](/user/386984) 没事
by Spir1t @ 2023-04-09 11:16:09


|