恒生电子 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
*/

查看11道真题和解析
顺丰集团工作强度 347人发布