题目链接:股神
题目描述
有股神吗?
有,小赛就是!
经过严密的计算,小赛买了一支股票,他知道从他买股票的那天开始,股票会有以下变化:第一天不变,以后涨一天,跌一天,涨两天,跌一天,涨三天,跌一天...依此类推。
为方便计算,假设每次涨和跌皆为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 }
感觉这个题目的逻辑好难啊,浪费了好长时间,是我钻死胡同了么。求更好的解法。