为什么90分,第一个测试点没过?
代码如下:
#include<bits/stdc++.h>
using namespace std;
int n,no,s[305]={1,1},l,r,i,j,p;
int main(){
scanf("%d",&n);
if(n<5)
printf("%d\n%d\n",n,n);
else{
for(r=2;(r-1)*(r+2)/2<n;++r);
if((r-1)*(r+2)/2==n) l=2,no=1;
else if((r-1)*(r+2)/2==n+1) l=3,no=r,++r;
else l=2,no=(r-1)*(r+2)/2-n;
for(j=l;j<=r;++j,s[0]=i-1)
if(j!=no){
for(i=1;i<=s[0];++i) s[i]=s[i]*j+p,p=s[i]/10,s[i]%=10;
while(p>0) s[i]=p%10,p/=10,++i;
}
for(i=l;i<r;++i) if(i!=no) printf("%d ",i);
printf("%d\n",r);
for(i=s[0];i>0;--i) putchar(s[i]+'0');
}
return 0;
}