股神

目录

题目描述

解题思路

参考解题


题目描述

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

为方便计算,假设每次涨和跌皆为1,股票初始单价也为1,请计算买股票的第n天每股股票值多少钱?

 

解题思路

分析得出应该是一个数学问题,列出表格,方便分析:

实际天数 date1 23 4 5  6 7 8 910 11 12 13 14 15 16 17 18 19 20 
当天价格 price1 21 2 32 3 4 54    5   6   7   87    8   9  10  11 12
区间 interval12345
区间价格下限 downPrice11(+0)2(+1)4(+2)7(+3)
区间价格下限对应实际天数 downDate13(+2)6(+3)10(+4)15(+6)

得出规律:

  • downDate = 1 + 2 + 3 + …… + interval = interval*(interval+1)/2;
  • downPrice =1 + 0 + 1 + 2 + 3 + …… + (interval - 2) = (interval^2 -3*interval + 4) /2;

对于第n天,首先判断其属于第几个区间,然后得出该区间的下限天数和下限价格,实际价格为下限价格加上实际天数-下限天数

 

参考解题

import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner sc  = new Scanner(System.in);
		int date = sc.nextInt();
		
		double Interval = Math.floor((Math.pow(8 * date + 1, 0.5) - 1)/2);// 区间
		double downDate = Math.floor(Interval*(Interval + 1)/2);	// 区间的下限日期
		double downPrice = (Math.pow(Interval, 2) - 3*Interval + 4)/2;	// 区间的下限价格
		System.out.println( (int)(downPrice + (date - downDate)));
	}
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值