4.11 微众银行笔试-java实习岗
选择题比较简单,让我印象深刻的是继承和实现关键字的使用和顺序问题(我竟然不知道extend不能写在implements后面)🤣
编程题:
1.一个十进制数转16进制数中含字母有多少个?
2.第一行输入n,x,y
x表示左视野,y表示右视野, n表示编号为1到n的人
第二行输入一组n个数,表示所对应编号的人的能力值
求最左边那个努力的人
3.一个(1<=n<=1000)位的字符串数n(字符0-9)的字串(含本身)能被k整除?
本人菜鸡答题题解如下,全100%,欢迎评论区讨论!
第一题:
public static void main(String[] args) { int num = new Scanner(System.in).nextInt(); if (num <= 9) { System.out.println(num); return; } int ans = 0; while (num != 0) { int n = num & 15;//&1111 if (n >= 10) { ans++; } num >>= 4;//一个十六进位有4位二进制 } System.out.println(ans); }第二题:
public static void main(String[] args) { Scanner in = new Scanner(System.in); int n = in.nextInt(); int x = in.nextInt(); int y = in.nextInt(); int[] nums = new int[n]; for (int i = 0; i < nums.length; i++) { nums[i] = in.nextInt(); } for (int i = 0; i < nums.length; i++) { //遍历右边 boolean flag = false; for (int j = i + 1; j < nums.length && j <= i + y; j++) { if (nums[j] < nums[i]) { flag = true; break; } } if (flag) {//提前结束 continue; } for (int j = i - 1; j >= 0 && j <= i - y; j--) { if (nums[j] < nums[i]) { flag = true; break; } } if (!flag) { System.out.println(i + 1); return; } } }第三题
public static void main(String[] args) { Scanner in = new Scanner(System.in); int n = in.nextInt(); int k = in.nextInt(); String str = in.next(); int ans = 0; for (int i = 0; i < n; i++) { for (int j = i + 1; j <= n; j++) { String s = str.substring(i, j); char[] chars = s.toCharArray(); int mod = 0; //大数除法 for (char c : chars) { mod = (mod * 10 + c - '0') % k; } if (mod == 0) { ans++; } } } System.out.println(ans); }期待笔试🤗