poj1032

来源:互联网 发布:阳台封窗价格计算法 编辑:程序博客网 时间:2024/06/06 06:43

 这道题找到规律后还是蛮简单的,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;
}

原创粉丝点击