算法 数位差与数值和的构造 求解代码 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringTokenizer in = new StringTokenizer(br.readLine()); PrintWriter out = new PrintWriter(new OutputStreamWriter(System.out)); int t = Integer.parseInt(in.nextToken()); for (int i = 0; i < t; i++) { in = new StringTokenizer(br.readLine()); String s = in.nextToken(); StringBuilder sb1 = new StringBuilder(); StringBuilder sb2 = new StringBuilder(); boolean flag = true; for (char c : s.toCharArray()) { int digit = c - '0'; int half = digit / 2; //当前位是偶数 → 平分给sb1和sb2 if (digit % 2 == 0) { sb1.append(half); sb2.append(half); } else { //当前位是奇数 → 交替分配多的1(half+1) if (flag) { sb1.append(half + 1); sb2.append(half); } else { sb1.append(half); sb2.append(half + 1); } flag = !flag; } } out.println(Long.parseLong(sb1.toString()) + " " + Long.parseLong( sb2.toString())); } out.flush(); out.close(); br.close(); }