问题:股票变化的规律为第一天不变,然后涨一天,跌一天,涨两天,跌一天,涨三天,跌一天…,第一天股票价格为1,每次变化均为1,问第n天时,股票价格为多少
思路:通过天数来判断,第n天时经过了完整的涨跌周期(一段连续的涨和一次跌,被化为一个涨跌周期)
步骤:设置变量k和变量j
k : 经历了多少次完整的涨跌周期,初始化为0
j: 除了第k + 1次涨跌周期的第几天 , 初始化为0 //例如第三天时,k = 1,j = 0,第四天时,k = 1,j = 1
sum :经过k次完整涨跌周期时的天数,初始化为1
res : 经过k次完整涨跌周期时的价格,初始化为1
方法:根据sum与n的比对,求出k,过程中res也在变化,最后用j = n - sum,res += j
代码:
int compute(int n)
{
int j = 0;
int sum = 1, k, res = 1;
for(k = 1; sum + k + 1 <= n; ++k)
{
sum += (k + 1);
res += (k - 1);
}
j = n - sum;
return res + j;
}
转载请注明原文地址: https://ju.6miu.com/read-1298701.html