携程笔试
两道题都是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; } } } } }