编程题“奇怪的数组”

package com.test.nowcode1;

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

/**
 * 
 * zhrt是数学大佬,但有一天一道奇怪的数学题把他难住了: 
 * 题目要求计算两个十进制数相加后的结果,但在本题中是不需要进位的!
 * 输入描述: 输入有多组(组数不超过1000),每组占一行,每行有2个正整数A和B。(A,B<=1e9) 
 * 输出描述:每组输出占一行,输出题目中A和B相加的结果。 
 * 示例1 
 * 输入
 * 123 321 
 * 999 1 
 * 99 11
 * 输出
 * 444 
 * 990 
 * 0
 *
 */
/**
 * 解题思路: 利用数组集合存放数据;
 * 字符串->charAt取各位数字转换为整型,各位相加取余->结果放入整形数组->用StringBuilder处理为String输出
 * 
 * @author pikaqiu_li
 *
 */

public class Main2 {
	public static void main(String[] args) {

		System.out.println("remeber delete me:");
		Scanner in = new Scanner(System.in);
		// 创建一个集合存储输入数据
		List numList = new ArrayList();
		String strIn = "";
		do {
			strIn = in.nextLine();
			if (strIn.equals("") || numList.size() == 1000) {
				break;
			} else {
				String[] num2 = strIn.split(" ");
				if (Integer.valueOf(num2[0]) <= Math.pow(10, 9) && Integer.valueOf(num2[1]) <= Math.pow(10, 9)) {
					numList.add(strIn);
				}
			}
		} while (in.hasNextLine());

		long t1 = System.currentTimeMillis();
		for (int id = 0; id < numList.size(); id++) {
			String numAB = numList.get(id);
			String[] AB = numAB.split(" ");
			//正整数A
			String A = AB[0];
			//正整数B
			String B = AB[1];
			//Cout整型数组放结果
			int[] Cout = new int[A.length() >= B.length() ? A.length() : B.length()];
			
			//判断两整数重合部分并按规则各位相加,
			for (int i = (A.length() > B.length() ? B.length() : A.length()) - 1; i >= 0; i--) {
				int numA = Integer.parseInt(A.charAt(i) + "");
				int numB = Integer.parseInt(B.charAt(i) + "");
				int C = (numA + numB) % 10;
				Cout[i] = C;
			}
			
			//若数A>数B,将A多出的部分赋给结果数组Cout
			if (A.length() > B.length()) {
				for (int i = 0; i < (A.length() - B.length()); i++) {
					Cout[i] = Integer.parseInt(A.charAt(i)+"");
				}
			} else if (A.length() < B.length()) {//反之若数B>数A,将B多出的部分赋给结果数组Cout
				for (int i = 0; i < (B.length() - A.length()); i++) {
					Cout[i] = Integer.parseInt(B.charAt(i)+"");
				}
			}
			
			StringBuffer sb = new StringBuffer();
			for (int i = 0; i < Cout.length; i++) {
				sb.append(Cout[i]);//将Cout转换为字符串
			}
			String result = sb.toString();
			System.out.println(Integer.parseInt(result));
		}
		in.close();
		long t2 = System.currentTimeMillis();
		System.out.println("shijian:" + (t2 - t1) + "ms");
	}
}

你可能感兴趣的:(笔试题)