알고리즘 : 문자열

큰 수 A+B

시간 제한 메모리 제한
1초 256MB

 

문제

두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오.

입력

첫째 줄에 A와 B가 주어진다. (0 < A,B < 1010000)

출력

첫째 줄에 A+B를 출력한다.

예제 입력 1

9223372036854775807 9223372036854775808

예제 출력 1

18446744073709551615

출처


import java.io.*;
import java.util.StringTokenizer;

public class Main {
	public static void main(String[] args) throws Exception {
		Main main = new Main();
		main.start();
	}

	private void start() throws Exception {
		//System.setIn(new FileInputStream("src/test1/input.txt"));
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
		String in = br.readLine();
		StringTokenizer st = new StringTokenizer(in, " ");
		String num1 = st.nextToken();
		String num2 = st.nextToken();
		bw.write(add(num1, num2));
		br.close();
		bw.close();
	}

	private String add(String num1, String num2) {
		//System.out.println(String.format("%s + %s", num1, num2));
		int f = 0;
		StringBuffer result = new StringBuffer();
		for (int i = num1.length() - 1, j = num2.length() - 1; i >= 0 || j >= 0; i--, j--) {
			int target1 = i < 0 ? 0 : num1.charAt(i) - '0';
			int target2 = j < 0 ? 0 : num2.charAt(j) - '0';
			int addResult = target1 + target2 + f;
			//System.out.println(String.format("%d + %d = %d", target1, target2, addResult));
			result.insert(0, addResult % 10);
			f = addResult / 10;
		}
		if(f > 0) {
			result.insert(0, f);
		}
		return result.toString();
	}
}

 

시간 메모리
152ms 15024KB

 


출처

- https://www.acmicpc.net/problem/10757

+ Recent posts