下面是一个示例 Java 代码,实现上述所描述的功能:
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int[] m = new int[n];
for (int i = 0; i < n; i++) {
m[i] = sc.nextInt();
}
int[] a = new int[n];
for (int i = 0; i < n; i++) {
a[i] = sc.nextInt();
}
char op = sc.next().charAt(0);
int[] b = new int[n];
for (int i = 0; i < n; i++) {
b[i] = sc.nextInt();
}
int[] c = new int[n];
if (op == '+') {
// 计算 (a + b) mod m[0]
int carry = 0;
for (int i = n - 1; i >= 0; i--) {
int sum = a[i] + b[i] + carry;
c[i] = sum % m[0];
carry = sum / m[0];
}
} else {
// 计算 (a - b) mod m[0]
int borrow = 0;
for (int i = n - 1; i >= 0; i--) {
int diff = a[i] - b[i] - borrow;
if (diff < 0) {
diff += m[0];
borrow = 1;
} else {
borrow = 0;
}
c[i] = diff;
}
}
// 输出结果
for (int i = 0; i < n; i++) {
System.out.print(c[i] + " ");
}
System.out.println();
}
}
在这里,我们使用了一个数组 m 来存储每一位的进制,数组 a 和 b 分别存储两个运算数,数组 c 存储结果。对于加法,我们按照从低位到高位的顺序依次计算,并使用一个 carry 变量来记录进位情况;对于减法,我们同样按照从低位到高位的顺序