测开,笔试终于ak了一次个位数求和----------------------------------public class Main1 { public static void main(String[] args) { Scanner in = new Scanner(System.in); // 注意 hasNext 和 hasNextLine 的区别 int T = in.nextInt(); for(int i = 0; i long n = in.nextLong(); System.out.println(fun(n)); } } public static long fun(long n){ long res = 0L; long tp = n/10; res += 1L*tp*45L; long mod = n % 10; res += mod*(mod+1L)/2L; return res; }}---------------------------------买东西的那一题---------------------------------import java.util.*;public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int n = scanner.nextInt(); int k = scanner.nextInt(); long m = scanner.nextLong(); int[] wallets = new int[n]; long res = 0L; //余数为k-1,需要补1个,以此类推 TreeMap map = new TreeMap<>((a,b)->b.compareTo(a)); for (int i = 0; i wallets[i] = scanner.nextInt(); //取余前直接计算能买的数量,后续对余数操作 res += wallets[i] / k; wallets[i] = wallets[i] % k; map.put(wallets[i],map.getOrDefault(wallets[i],0)+1); } //遍历直接扣减 for (Map.Entry entry : map.entrySet()) { //key为余数,val为数量 int key = entry.getKey(); int val = entry.getValue(); //System.out.println(key +&quot; &quot;+val); //p为当前余数需要补的数量与m比较 long p = 1L*(k-key)*(val); if(m >= p){ m -= p; res += val; }else{ res = res + m/(k-key); m = 0; break; } } //遍历完成且m>0,补在任何位置都可以 if(m > 0){ res += m/k; } System.out.println(res); }}