示例1:
input
2 3 2 2
output
7
示例2:
input
2 3 2 2 2
output
10
示例3:
input
2 3 2 2 5 2 5 4 3 3 4 2 2 2 2
output
24
题解
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
String[] split = in.nextLine().split(" ");
Map<Integer, Integer> map = new HashMap<>();
for (String s : split) {
int key = Integer.parseInt(s) + 1;
int value = map.getOrDefault(Integer.parseInt(s) + 1, 0) + 1;
map.put(key, value);
}
int sum = 0;
for (Map.Entry<Integer, Integer> entry : map.entrySet()) {
sum += (int) Math.ceil((double) entry.getValue() / entry.getKey()) * entry.getKey();
}
System.out.println(sum);
}
}
参考
import java.util.Scanner;
import java.util.Map;
import java.util.HashMap;
import java.util.Set;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
Map<Integer,Integer> map = new HashMap<>();
while (in.hasNextInt()) { // 注意 while 处理多个 case
int num = in.nextInt();
int key = num + 1 ;
if(map.get(key)!=null){
map.put(key,map.get(key)+1);
}else{
map.put(key,1);
}
}
Set<Integer> set = map.keySet();
int sum = 0 ;
for(int k : set){
int v = map.get(k);
if(k<v){
int x = v/k;
if(v%k==0){
sum += x*k;
}else{
sum += (x+1)*k;
}
}else{
sum += k;
}
}
System.out.println(sum);
}
}
https://blog.csdn.net/weixin_52908342/article/details/135398934