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);
} 期待笔试🤗