【编程题】股神

  题目链接:股神

  题目描述

  有股神吗?

  有,小赛就是!

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

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

  

 

  附上本机没问题,但是提交不通过的Java代码。。。。求指教

  编译通过了。。。。原来是我用的类名不对,平台要求统一用Main,而我的是Test。。。

  

 1 import java.util.Scanner;
 2 
 3 class Test{
 4 public static void main(String[] args){
 5     Scanner cin = new Scanner(System.in);
 6       while(cin.hasNextInt()){
 7         int day = cin.nextInt();
 8           int money = computeMoney(day);
 9           System.out.println(money);
10         }
11     }
12       
13   private static int computeMoney(int day){
14     int money = 1;
15     int part = 3; 
16     int i = 3;
17     if(day == 1)
18         return 1;
19     else if(day == 2)
20         return 2;
21     else{
22         while(i <= day){        //这一部分是以每个跌价为切分点循环,这么多天内有多少天跌就循环几次,当然我是从第3天开始的
23             money += (part-3);
24             if(i == day)
25                 break;            //这里处理特殊情况,如果进入循环的切分点,正好等于输入的天数就跳出循环,此时的money是正确的,确保i=day不进入下面的if语句
26             i += part;
27             part++;    
28         }
29         if(i > day){        //这一部分表示不能进入下一次循环,又恰巧不是下跌的天数,就得从上次下跌时的价格加上差价
30             i = i-part+1;
31             money += day-i; 
32         }
33         return money;
34     }
35   }
36 }

  感觉这个题目的逻辑好难啊,浪费了好长时间,是我钻死胡同了么。求更好的解法。

转载于:https://www.cnblogs.com/focusonepoint/p/5720035.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值