RT,最后一个点一直过不去
做法就是朴素的裂项相加,当 N 为 p×(p+1) 形式时在 N−1 做法基础上拆一个相对较大的数,马蜂比较丑陋
cin>>n;
for(int i=1;i*i<=n;i++)
if(i*(i+1)==n)
{
cout<<"Yes"<<endl;
int d;
d=min(n-2,24LL);
for(int j=1;j<d;j++)cout<<j*(j+1)<<' ';
cout<<n-1<<' '<<d*(d+1)+1<<' '<<d*(d+1)*(d*(d+1)+1)<<" ";
for(int j=d+1;j<=n-2;j++)cout<<j*(j+1)<<" ";
cout<<endl;
return;
}
cout<<"Yes"<<endl;
for(int i=1;i<n;i++)cout<<i*(i+1)<<' ';
cout<<n<<endl;