bilibili0329笔试
两道编程,不难。
题1:
import java.util.*;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
// 注意 hasNext 和 hasNextLine 的区别
// while (in.hasNextInt()) { // 注意 while 处理多个 case
// int a = in.nextInt();
// int b = in.nextInt();
// System.out.println(a + b);
// }
String[] nk = in.nextLine().split(" ");
int n = Integer.parseInt(nk[0]);
int k = Integer.parseInt(nk[1]);
int[] nums = new int[n];
String[] numStr = in.nextLine().split(" ");
for (int i = 0; i < n; i++) {
nums[i] = Integer.parseInt(numStr[i]);
}
System.out.println(maxDiffSum(nums, n, k));
}
private static long maxDiffSum(int[] nums, int n, int k) {
long ans = 0;
Arrays.sort(nums);
int pairNum = Math.min(n - k, k);
for(int i = 0; i < pairNum; i++) {
ans += nums[n - i - 1] - nums[i];
}
return ans;
}
}
题2:
import java.util.Scanner;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
// 注意 hasNext 和 hasNextLine 的区别
// while (in.hasNextInt()) { // 注意 while 处理多个 case
// int a = in.nextInt();
// int b = in.nextInt();
// System.out.println(a + b);
// }
String[] nmk = in.nextLine().split(" ");
int n = Integer.parseInt(nmk[0]);
int m = Integer.parseInt(nmk[1]);
int k = Integer.parseInt(nmk[2]);
System.out.println(cal(n, m, k));
}
private static int cal(int n, int m, int k) {
// 需要保证至少分到一个
if (m < n) return 0;
int ans = 1;
m -= n;
int l = k - 1, r = k - 1;
while (true) {
int need = r - l + 1;
m -= need;
if (m < 0) break;
ans++;
r = r == n - 1 ? r : r + 1;
l = l == 0 ? l : l - 1;
}
return ans;
}
}
#b站##笔试#
题1:
import java.util.*;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
// 注意 hasNext 和 hasNextLine 的区别
// while (in.hasNextInt()) { // 注意 while 处理多个 case
// int a = in.nextInt();
// int b = in.nextInt();
// System.out.println(a + b);
// }
String[] nk = in.nextLine().split(" ");
int n = Integer.parseInt(nk[0]);
int k = Integer.parseInt(nk[1]);
int[] nums = new int[n];
String[] numStr = in.nextLine().split(" ");
for (int i = 0; i < n; i++) {
nums[i] = Integer.parseInt(numStr[i]);
}
System.out.println(maxDiffSum(nums, n, k));
}
private static long maxDiffSum(int[] nums, int n, int k) {
long ans = 0;
Arrays.sort(nums);
int pairNum = Math.min(n - k, k);
for(int i = 0; i < pairNum; i++) {
ans += nums[n - i - 1] - nums[i];
}
return ans;
}
}
题2:
import java.util.Scanner;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
// 注意 hasNext 和 hasNextLine 的区别
// while (in.hasNextInt()) { // 注意 while 处理多个 case
// int a = in.nextInt();
// int b = in.nextInt();
// System.out.println(a + b);
// }
String[] nmk = in.nextLine().split(" ");
int n = Integer.parseInt(nmk[0]);
int m = Integer.parseInt(nmk[1]);
int k = Integer.parseInt(nmk[2]);
System.out.println(cal(n, m, k));
}
private static int cal(int n, int m, int k) {
// 需要保证至少分到一个
if (m < n) return 0;
int ans = 1;
m -= n;
int l = k - 1, r = k - 1;
while (true) {
int need = r - l + 1;
m -= need;
if (m < 0) break;
ans++;
r = r == n - 1 ? r : r + 1;
l = l == 0 ? l : l - 1;
}
return ans;
}
}
#b站##笔试#
全部评论
哎呀第一题,烦死了,没看到用long啊
请问可以用cpp打吗?
第一道题原来的用long,怪不得不能全部通过
相关推荐