求一个算法公式,减量增加的函数。
初始值x=20000,结束值y=200000
有一个下标为N的数列例如:20000,24000,26500,.......199000,200000
要求每个递增量在逐步减少,越往后越小。
谢谢!
[解决办法]
是求一个解还是所有解?
从后往前推;比如:
arr[n]=200000;
arr[n-1]=200000-2^1+1=199999;
......
arr[i]=200000-2^(n-i)+1;
......
arr[0]=200000-2^(n-0)+1
[解决办法]
发觉这题目有点奇怪...是否要控制次数呢?
比如20000 - 200000经过几次呢?
[解决办法]
假设增量一个等差递减函数An,第1个增量为A1,公差d
则有
x+A1+A2+...+An=y
x+A1+A1-d+A1-2d+...+A1-(n-1)*d=y
n*A1-n(n-1)*d/2=y-x
假设A1=k*d,则有:
nd(2k+1-n)=2(y-x)
所以,将2(y-x)分解因数即可
[解决办法]
对于本题x=20000,y=200000,2(y-x)=360000=2*2*2*2*2*2*3*3*5*5*5*5
取360000=875*24*8
即n=1875,d=24,则K=941,A1=22584,可得到:
20000 42584 65144 87680 110192 132680 155144 177584 200000
或n=1875,d=8,则K=949,A1=7592,可得到:
20000 27592 35176 42752 50320 57880 65432 72976 80512 88040 95560 103072 110576 118072 125560 133040 140512 147976 155432 162880 170320 177752 185176 192592 200000