有股神吗?
有,小赛就是!
经过严密的计算,小赛买了一支股票,他知道从他买股票的那天开始,股票会有以下变化:第一天不变,以后涨一天,跌一天,涨两天,跌一天,涨三天,跌一天...依此类推。
为方便计算,假设每次涨和跌皆为1,股票初始单价也为1,请计算买股票的第n天每股股票值多少钱?
输入
输入包括多组数据;
每行输入一个n,1<=n<=10^9 。
样例输入
1
2
3
4
5
输出
请输出他每股股票多少钱,对于每组数据,输出一行。
样例输出
1
2
1
2
3
结题思路: 1. 先求出下跌的次数; 2. 求除“ 最后一次下跌以及其后面的所有涨的天数之外”的前面涨跌之后的价格; 3. 找出最后一次下跌以后,涨的天数; 4. 求所有的价格 代码: #include <unistd.h> #include <stdlib.h> #include <stdio.h> int getValue(int d) { int j = 2; int i = 0;//记录下跌天数 int k=d; int sum = 2; int s = 2;//实际上是从第三天开始计算,此处2代表前两天 int cu = 0; while(k>j){//算出跌的天数 i++; k-=j; j++; } for(int p=0; p<i-1; p++){//计算除最后一次跌以及之后的涨之外,所有涨的价格 sum+=s; sum-=1; s++;//出最后一轮外,从本次跌到下一次跌之前的天数,次后轮 } for(int z=2; z<=s; z++){ cu += z; } k = d - cu;//不包含最后一次跌 sum += (k-2);//k加上最后一轮涨的k-1天,减掉跌的1天 return sum; } int main(int argc, char* argv[]) { int n; scanf("%d", &n); printf("%d\n", getValue(n)); } /*代码有点多,看到有一些大神几行就解决了,但没看懂,纯粹自己理解,有更简洁的代码还望共享一下*/