思想:因为是n个连续的序列,因此,设整数n为y,y由i个数组成,初始值为x,则有x+x+1+...+x+(i-1)=y,因此有 x=(2* y - i*(i-1))/(2*i),若x是整数,则可以由以x开始的i个数组成。由于,没有仔细算过n的取值范围,所以暂时去[2,y/2],希望各位给出范围建议。
#include<iostream>
using namespace std;
void continusSequence(const int &a);
int main()
{
int a;
cin>>a;
continusSequence(a);
}
void continusSequence(const int &a)
{
int x=0,i;
double tempx =0;
for(i=2;i<a/2;i++)
{
tempx = (2.0 *a - i*(i-1.0))/(2.0*i);
x= tempx;
if(x<1) break;
if(tempx == x)
{
for(int j=0;j<i;j++)
{
if(x+j>0) cout<<(x+j);
if(j==i-1)
{
cout<<"="<<a<<endl;
}
else if(x+j>0)
cout<<"+";
}
}
}
frontx =x;
}
运行结果: