@[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