这道题找到规律后还是蛮简单的,x=2+3+4+........(k-1)+k<=m<x+(k+1)=y
p=m-x;
if (p==0) the answer is x;
else if (p>=1&&p<=k-1) the answer is y-{k+1-p}
else if(p=k) the answer is x-{2}+{k+2}
源代码如下:
#include<iostream>
using namespace std;
int main()
{
int i,m,x,y;
while(cin>>m)
{
x=0;y=0;
int k;
for(i=2;;i++)
{
x=x+i;
if(x<=m&&m<x+i+1)
{
y=x+i+1;
k=i;
break;
}
}
int p;
p=m-x;
if(p==0)
{
for(i=2;i<=k;i++)
cout<<i<<" ";
cout<<endl;
}
else if(p>=1&&p<=k-1)
{
for(i=2;i<=k+1;i++)
if(i!=k+1-p)
cout<<i<<" ";
cout<<endl;
}
else if(p==k)
{
for(i=2;i<=k+2;i++)
if(i!=2&&i!=k+1)
cout<<i<<" ";
cout<<endl;
}
}
return 0;
}