zoukankan      html  css  js  c++  java
  • 【编程题】股神

      题目链接:股神

      题目描述

      有股神吗?

      有,小赛就是!

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

      为方便计算,假设每次涨和跌皆为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 }

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

  • 相关阅读:
    Neo4j
    linux系统中如何建立与删除软连接(方便快捷使用,大量节约时间)
    eclipse/myeclipse 中,如何删除已经下载过的插件(举例:删除scala ide)
    dayday up
    元类
    sort和sorted
    反射
    继承派生
    property
    python3.5和3.6区别
  • 原文地址:https://www.cnblogs.com/focusonepoint/p/5720035.html
Copyright © 2011-2022 走看看