携程笔试
两道题都是while中的scanner.nextint出现这个bug,有人遇到一样的吗,我服了
第三题:举例出所有可能的情况。
#携程笔试#
感谢评论区大佬,做这么多陪跑笔试,第一次遇到这样的,好像是while里面在用nextInt() 得先用hasNextInt()做个判断就不会出这个错误了。
因为被这玩意浪费了差不多30 40分钟,最后结果1 0.05 1 0
寄
斗胆贴一贴写的屎山,也希望各位大佬贴一贴第二题和第四题大家一起讨论讨论
第一题
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int n = scan.nextInt();
int k = scan.nextInt();
int a=0,b=0;
if(k%2==1){
a=k/2;
b=k/2+1;
}else{
a=k/2;
b=k/2;
}
int nums = (a+1)*(b+1);
float ans = n*n/(float)nums;
System.out.println(String.format("%.2f",ans));
}
} import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int T = scan.nextInt();
scan.nextLine();
while(T>=0){
T--;
if(scan.hasNextInt()){
int n = scan.nextInt();
int[] nums = new int[n];
for (int i = 0; i < n; i++) {
nums[i] = scan.nextInt();
}
scan.nextLine();
char[] strs = scan.nextLine().toCharArray();
//分别是数组中红的最小最大值和蓝的最小最大值
int r_min = Integer.MAX_VALUE;
int r_max = Integer.MIN_VALUE;
int b_min = Integer.MAX_VALUE;
int b_max = Integer.MIN_VALUE;
for (int i = 0; i < n; i++) {
if(strs[i]=='R'){
r_min = Math.min(nums[i],r_min);
r_max = Math.max(nums[i],r_max);
}
if(strs[i]=='B'){
b_min = Math.min(nums[i],b_min);
b_max = Math.max(nums[i],b_max);
}
}
if(r_min<=b_min&&r_max>=b_max){
System.out.println(r_max-r_min);
continue;
}
if(b_min<=r_min&&b_max>=r_max){
System.out.println(b_max-b_min);
continue;
}
if(r_min<=b_min&&b_max>=r_max){
if(b_max-r_max<b_min-r_min){
System.out.println(b_max-(r_min+b_max-r_max));
}else{
System.out.println(b_max-(r_min+b_min-r_min));
}
continue;
}
if(b_min<=r_min&&b_max<=r_max){
System.out.println(r_max-b_min);
continue;
}
}
}
}
}
查看2道真题和解析
