• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

2023.3.31恒生电子笔试题

武飞扬头像
谷毛毛
帮助17

第一题

找到从11-n的所有超完全数,并从大到小排序

超完全数:n的长度为len,n的每位数的len次方之和等于n

比如:153 = 1^3 5^3 3^3 = 1 125 27 = 153

1634 = 1^4 6^4 3^4 4^4 = 1534

public class Solution {
    
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt();
        for (int i = Math.min(10000000,n); i >= 11; i--) {
            if (fun(i)){
                System.out.println(i);
            }
        }
    }

    public static boolean fun(int n) {
        char[] chars = String.valueOf(n).toCharArray();
        int len = chars.length;
        int sum = 0;
        for (char c : chars) {
            sum  = Math.pow(c - '0',len);
        }
        return sum == n;
    }
}

第二题

public class Solution {

    /**
     *
     * 输入:10000,7,[1.0, 2.0, 1.0,2.0, 2.0, 3.0, 2.0],2   输出50000.00000
     * 注解:第一天1元买入10000股,第二天卖出20000元
     * 第三天1元买入20000股,第六天卖出60000元,盈利50000元
     *
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 根据输入计算最大收益
     * @param M double浮点型 初始资金
     * @param N int整型 历史价格天数
     * @param historyPrices double浮点型一维数组 N天历史价格
     * @param K int整型 最大允许交易次数
     * @return double浮点型
     */
    
    public static double get_max_profit (double M, int N, double[] historyPrices, int K) {
        //0不操作,奇数最多持有股票数,偶数最多持有钱数
        double[][] dp = new double[N][2 * K   1];

        dp[0][0] = M;
        for (int i = 1; i < 2 * K   1; i  ) {
            if (i % 2 == 0) {
                dp[0][i] = M;
            }
            else {
                dp[0][i] = M / historyPrices[0];
            }
        }
        for (int i = 1; i < historyPrices.length; i  ) {
            for (int j = 1; j < 2 * K   1; j  ) {
                if (j % 2 == 1) {
                    dp[i][j] = Math.max(dp[i - 1][j], dp[i - 1][j - 1] / historyPrices[i]);
                }
                else {
                    dp[i][j] = Math.max(dp[i - 1][j], dp[i - 1][j - 1] * historyPrices[i]);
                }
            }
        }
        return dp[historyPrices.length - 1][2 * K] - M;
    }



    public static void main(String[] args) {
        System.out.println(get_max_profit(10000,7,new double[]{1.0, 2.0, 1.0,2.0, 2.0, 3.0, 2.0},2));
    }


}

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tangjehaa
系列文章
更多 icon
同类精品
更多 icon
继续加载