股神问题 - 有股神吗? 有, 小赛就是!

题目描述
									

有股神吗?

有,小赛就是!

经过严密的计算,小赛买了一支股票,他知道从他买股票的那天开始,股票会有以下变化:第一天不变,以后涨一天,跌一天,涨两天,跌一天,涨三天,跌一天...依此类推。

为方便计算,假设每次涨和跌皆为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));
  
}

/*代码有点多,看到有一些大神几行就解决了,但没看懂,纯粹自己理解,有更简洁的代码还望共享一下*/
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值