K序列
样例
输入:
5
2 1 5 10
5 5 1 1
3 1 1000 10000
5 1 20 5
5 -10 10 10
输出
1 5
5 4 3 2 1
1 500 1000
1 6 11 15 20
-10 -5 0 5 10
思路
根据题目,我们可以由数学的思想去实现这个序列
首先分析这个序列 已经有第一项和最后一项。
然后相邻俩项的差不可以超过K。
那么我们可以假设 相邻俩项的差一直为K;
那么假如 第一项为1 最后一项为1000 K的值为10000 然后这个序列有5项
那么接下来我们可以这么做
1.因为第一项小于最后一项 所以第二项就是第一项加K 为10001;
2.第二项大于最后一项 所以第三项就是第二项减K为1;
3.如此循环;
代码实现
#include"iostream"
#include"math.h"
using namespace std;
int main()
{
long long n,h,k,t,i,a,b,S,c,d,e,f;
cin>>f;
for(i=0;i<f;i++)
{
cin>>n>>h>>t>>k;
cout<<h<<" ";
n=n-2;
a=h;
while(n>0)
{
if(a>=t)
{
a=a-k;
cout<<a<<" ";
n--;
continue;
}
if(a<t)
{
a=a+k;
cout<<a<<" ";
n--;
continue;
}
}
cout<<t<<endl;
}
return 0;
}