百度用的赛码网考,需要开摄像头,笔试包括30道选择题60分,两道编程题40分
题目一:优惠券这道题笔试时a了27%,笔试后发牛客上有佬给做了指正,我觉得应该是可以的了
题目描述:在L-R闭区间内,取一个整数x,优惠计算方式=x *(x的各位数字之和),问最大的优惠是多少?
例:[3,6],取3时,优惠为3*3=9,取4时,优惠为4*4=16,...因此最大优惠为6*6=36
再比如[28,31],取29时最大,优惠为29*(2+9)= 319
边界:1 <= L <= R <= 1e5
Scanner cin = new Scanner(System.in); int l = cin.nextInt(); int r = cin.nextInt(); int ge = 0; int shi = 0; int bai = 0; int qian = 0; int wan = 0; long max = 1; for(int i = l;i <= r;i++){ wan = i / 10000 % 10; qian = i / 1000 % 10; bai = i / 100 % 10; shi = i / 10 % 10; ge = i % 10; max = Math.max(max,i * (ge + shi + bai + qian + wan)) } System.out.print(max);
题目二:a了82%,暴力解法,欢迎讨论。
题目描述:给了一个数组的长度n,和一个整数k,求这个数组有多少对差值为k?
例1
输入:5 5
5 6 7 8 9 10
输出1,只有5、10一对
例2
输入:5 5
5 5 5 10 10
输出6 有6对
Scanner cin = new Scanner(System.in); int n = cin.nextInt(); int k = cin.nextInt(); int count = 0; ArrayList<Integer> arr = new ArrayList(); while(cin.hasNextLine()) { String line = cin.nextLine(); if (line.length() > 0) { String[] arrLine = line.split(" "); for (int i=0; i<arrLine.length; i++) { arr.add(Integer.parseInt(arrLine[i])); } } } for(int i = 0;i < n;i++){ for(int j = i + 1;j < n;j++){ if(Math.abs(arr.get(i) - arr.get(j)) == k){ count++; } } } System.out.print(count);#软件开发2023笔面经#