恒生电子 java笔试
我是万万没有想到恒生的笔试选择题的比分占那么大
首先是不确定单选多选的选择题(选错不得分,少选得1/2),分两部分,一部分是计算机基础,10道题,一共占了四十分。
一部分是java语言相关的题,占了20分(这部分感觉比较简单)
编程题一共四十分,
mysql编程有3个,共15分,都是比较基础的
算法题有两道共25分
一道是求10到K范围内的好数,好数(153:他是3位数,然后组成他的每一个数字的3的幂的和等于他本身153=13+53+33)
我用的暴力解法,然后居然通过了
/** 输入: 1000 输出: 407 371 370 153 */ import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); while (in.hasNextInt()) {// 注意,如果输入是多个测试用例,请通过while循环处理多个测试用例 int a = in.nextInt(); for(int i=a-1;i>10;i--){ if(i==getP(i)) System.out.println(i); } } } static Long getP(long num){ int count=0; long temp=num; while(temp!=0){ count++; temp=temp/10; } temp=num; long res=0; while(temp!=0){ res+=getC(count,temp%10); temp=temp/10; } return res; } static long getC(int count,long num){ if(count<=0)return 1l; long res=num; while(--count>0){ res=res*num; } return res; } }
第二道编程题
股票买卖问题,第一个参数M 代表本金,第二个参数代表多少天的股票价格,第三个参数代表这些天股票的价格,第四个参数代表允许多少次买卖
如我下面的输入,10000的本金,第一天买第二天卖,变成20000,第三天买第6天卖,变成了60000,减去本金,一共赚了50000
我的错了,就不贴代码了
/** 输入: 10000,7,new double[]{1.0, 2.0, 1.0,2.0, 2.0, 3.0, 2.0},2 输出: 50000.00000 */