Codeforces #46 (div2) B "Sum"

問題:http://codeforces.com/contest/49/problem/B

参加形式:本番.

二つの数値が与えられる.ある進数で数値で表したとき,その二つの数値を足した数値の桁数が一番大きくなるものを求める.少なくとも入力に用いられる数字が表現できる進数である必要がある.

入力に含まれる数字のうち最大であるものを求め,その進数から16進数までのうち最大の長さとなるものを求める.そういえばなぜ16進数まででよかったのかわからないけど,他の人は1000まで試していたみたい.もしかして10進数以上はほぼ確実に短くなる?

import java.util.*;
import static java.lang.Integer.*;

public class B_Sum {
	public static void main(String[] args) {
		Scanner s = new Scanner(System.in);
		String str = s.nextLine();
		int max = 0;
		for (char c : str.toCharArray()) {
			if (c != ' ') {
				max = Math.max(max, valueOf("" + c, 16));
			}
		}
		String a = str.split(" ")[0], b = str.split(" ")[1];
		int r = 0;
		for (int i = max + 1; i < 17; ++i) {
			r=Math.max(r,Integer.toString(valueOf(a,i)+valueOf(b,i),i).length());
		}
		System.out.println(r);
	}
}