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

    xiaoxiao2021-08-19  119

    题目描述

    有股神吗?

    有,小赛就是!

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

    为方便计算,假设每次涨和跌皆为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));    } /*代码有点多,看到有一些大神几行就解决了,但没看懂,纯粹自己理解,有更简洁的代码还望共享一下*/
    转载请注明原文地址: https://ju.6miu.com/read-676639.html

    最新回复(0)