zoukankan      html  css  js  c++  java
  • 数列类题目

    股神

    题目描述

    有股神吗?有,小赛就是!经过严密的计算,小赛买了一支股票,他知道从他买股票的那天开始,股票会有以下变化:第一天不变,以后涨一天,跌一天,涨两天,跌一天,涨三天,跌一天...依此类推。为方便计算,假设每次涨和跌皆为1,股票初始单价也为1,请计算买股票的第n天每股股票值多少钱?

    输入输入包括多组数据;每行输入一个n,1<=n<=10^9 。 样例输入12345
    输出请输出他每股股票多少钱,对于每组数据,输出一行。 样例输出12123
    时间限制C/C++语言:1000MS其它语言:3000MS 内存限制C/C++语言:65536KB其它语言:589824KB

    题解

    import java.util.Scanner;
    public class Main {
        public static void main(String[] args) {
            Scanner scanner = new Scanner(System.in);
            while (scanner.hasNext()) {
                solve(scanner.nextInt());
            }
        }
    
        /**
         * 假设每天都增加1,那么亏损日就会多加2。       1 - (-1) == 2
         * 恰好题目第一天也是1,那么根据假设得到的结果为:1 + (n - 1)*1
         *
         * @param n 第几天
         * @return 最后结果
         */
        public static void solve(int n) {
            int result = n - 2 * getMinusCount(n);
            System.out.println(result);
        }
    
        /**
         * 算出前面有几次亏损
         * 亏损天数的计算函数为:day = f(n)
         * f(n) = (n+1)(n+2)/2
         *
         * @param n
         * @return 有几次亏损
         */
        public static int getMinusCount(int n) {
            int num = 0;
            while (true) {
                int res = (num + 1) * (num + 2) / 2;
                int next = (num + 2) * (num + 3) / 2;
                if (n >= res && n < next) {
                    return num;
                }
                num++;
            }
        }
    }
    
  • 相关阅读:
    Spring学习之旅(二)--容器
    Spring学习之旅(一)--初始Spring
    Logback的使用
    DES加解密工具类
    Lombok插件的使用
    from 表单用 GET 方法进行 URL 传值时后台无法获取问题
    组播
    linux头文件路径
    IANA
    6号板获取或放文件
  • 原文地址:https://www.cnblogs.com/oceans/p/13709643.html
Copyright © 2011-2022 走看看