java代码,#3,#6报RE,求dl指点
查看原帖
java代码,#3,#6报RE,求dl指点
1444408
AnPotato楼主2024/10/8 23:28
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 = sc.nextInt();
        int[] arr1 = new int[n+1];  //存放第一个数据
        int[] arr2 = new int[m+1];   //存放第二个数据

        for (int i = n-1;i >= 0;i--){    //1.逆序输入,方便进位
            arr1[i] = sc.nextInt();
        }
        for(int i = m - 1;i >= 0;i--){
            arr2[i] = sc.nextInt();
        }

        int min = Math.min(n,m);  //2.判断两个数谁的位数更长,并用mark做标记
        int max = Math.max(n,m);
        int mark = 0;  //mark为0表示第一个数的位数更多,mark为1表示第二个数位数更多
        if(max == n){
            mark = 1;
        }else{
            mark = 0;
        }

        int count = 0;  //count表示进位(无进位则count为0)
        if(min == max){  //两个数位数相同,有可能最后会多出一位,故创建的新数组arr长度+1
            max += 1;
        }
        String[] arr = new String[max];   //将运算后的结果放在新的arr数组中

        for(int i = 0; i < min; i++){   //3.对两个数都有的位进行运算
            int z = arr1[i] + arr2[i] + count;  //z为两个数直接相加的值,判断其是否该进位
            if(z >= (i+2) ){ //满足进位条件,下一位进一(即count为1)
                arr[i] = String.valueOf(z-i-2);
                count = 1;
            }else{  //不满足进位,本位值正常相加即可
                arr[i] = String.valueOf(z);
                count = 0;
            }
        }
        
        //4.对位数更多的数,
        // 接着刚刚计算的下一位开始
        for (int i = min;i <= max-1;i++){
            int l = 0;
            if(mark == 1){  //先判断是哪个数组位数长,对其计算
                l = arr1[i];
            }else {
                l = arr2[i];
            }

            if( (l+count) >= (i+2) ){
                arr[i] = String.valueOf(l+count - i - 2);
                count = 1;
            }else {
                arr[i] = String.valueOf(l + count);
                count = 0;
            }
        }

        int k = arr.length-1;
        while (arr[k].equals("0")){  //防止输出数字为0开头的情况
            k -= 1;
        }

        for(int i = k; i >= 0;i--){// 5.对数组倒序输出,最后一个数不带空格
            if( i == 0){
                System.out.print(arr[i]);
            }else {
                System.out.print(arr[i]+" ");
            }
        }
    }
}
2024/10/8 23:28
加载中...